我正在尝试在我们为业务创建的服务中建立编码模式(一些规则).我们遵循apigree为设计RESTful服务而提出的基本指导.
我们希望采用的规则之一是阻止我们不想支持的某些路由和动词组合.据推测,我们会发回一个HttpStatusCode.NotSupported用于这些非法组合,也许是一个人类可读的消息?
我们希望支持的法律组合是:
GET /resource - lists all resources
GET /resource/{id} - retrieves specific resource by ID
POST /resource - adds a new resource
PUT /resource/{id} - updates specific resource by ID
DELETE /resource/{id} - deletes specific resource by ID
Run Code Online (Sandbox Code Playgroud)
我们明确不想支持一些非法组合.
POST /resource
PUT /resource
DELETE /resource
Run Code Online (Sandbox Code Playgroud)
我们为每个支持的路由都有验证器.但是我们在代码库中的任何地方都没有定义任何这些非法路由.
从测试中我们了解到,如果客户端发送一个GET /resource/{id}空白id(string.Empty)的请求,那么ServiceStack magic不会为该请求执行验证器(GET /resource/{id}),而是重定向到GET/resource.我们认为它DELETE /resource/{id}和PUT /resource/{id}.但是这些'默认'行为都不可取,我们宁愿返回一个HttpStatusCode.NotSupported或一些标头指向客户端到API文档(或一些这样的指导).
您能否建议一些选项来在框架中明确处理这些情况?
干杯
servicestack ×1