SF提问
1 | #### 问题描述 |
回答
如果Action不符合CRUD操作那该怎么办?
- 重新构造这个Action,使得它像一个资源的field(我理解为部分域或者部分字段)。这种方法在Action不包含参数的情况下可以奏效。例如一个有效的action可以映射成布尔类型field,并且可以通过PATCH更新资源。
- 利用RESTful原则像处理子资源一样处理它。例如,Github的API让你通过
PUT /gists/:id/star
来 star a gist ,而通过DELETE /gists/:id/star
来进行 unstar 。- 有时候你实在是没有办法将Action映射到任何有意义的RESTful结构。例如,多资源搜索没办法真正地映射到任何一个资源接入点。这种情况,
/search
将非常有意义,虽然它不是一个名词。这样做没有问题 - 你只需要从API消费者的角度做正确的事,并确保所做的一切都用文档清晰记录下来了以避免(API消费者的)困惑。
所以题主完全可以提供 /app/names/search
服务专门用于搜索功能,查询参数一般是通过 query parameters
的方式传递。