V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
teli
V2EX  ›  API

一个 GET API URL 设计的有趣问题

  •  
  •   teli · 69 天前 · 1138 次点击
    这是一个创建于 69 天前的主题,其中的信息可能已经有所发展或是发生改变。
    该 GET URL 用来获取某资源
    URL 内含资源标识

    现要修改设计:
    如果是本人创建的资源,可以获取到全部信息
    如果不是本人创建的资源,可以获取到概要信息

    要求:
    1. 中间有道网关,以 URL 为缓存 KEY ,(因为简化了设计)不考虑 HTTP 头中的缓存控制信息 。因此相同的 URL 应该返回相同的内容
    2. 不考虑把一个请求,拆分为两个。比如:先请求资源的创建者是谁,再请求资源信息
    3. 开始时,客户端不知道当前用户 是不是资源的创建者
    4. URL 中不能带用户标识,不然网关的缓存形同虚设


    那么,这个 API URL 应该怎么设计?
    第 1 条附言  ·  68 天前
    或者换个问题,如果要舍去其中一条要求,应该舍去哪条
    第 2 条附言  ·  68 天前
    最终分了三个接口
    第一个接口查资源是谁的
    第二个查资源概要信息,第三个查资源详细信息
    第二、三个接口的响应的结构一样的,就是第二个接口的响应里少了内容
    7 条回复    2024-11-25 19:16:10 +08:00
    coolfan
        1
    coolfan  
       69 天前
    怎么鉴权
    rrfeng
        2
    rrfeng  
       69 天前 via Android   ❤️ 1
    请问拉屎别用肛门,怎么设计?
    Vegetable
        3
    Vegetable  
       69 天前
    1. “因此相同的 URL 应该返回相同的内容”
    2. “URL 中不能带用户标识”

    当然可以涉及一个/fruits/{id}/[detail],但是鉴权谁做?
    yinmin
        4
    yinmin  
       68 天前 via iPhone
    去掉( 1 )缓存改 redis ,在应用逻辑里实现缓存。
    在 http header 里加 user token 做鉴权。
    ninjashixuan
        5
    ninjashixuan  
       68 天前
    不觉得要求 1 和需求自相矛盾了么。
    teli
        6
    teli  
    OP
       68 天前
    @ninjashixuan 也许 这就不应该一个 API ,而是两个
    fengemma9
        7
    fengemma9  
       8 天前
    我 感觉 user 鉴权来区分该给什么信息就可以实现
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1680 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 19ms · UTC 16:47 · PVG 00:47 · LAX 08:47 · JFK 11:47
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.