我正在尝试创建一个只对某些接受标题类型作出响应的南希WebAPI。我想要的是在自定义接受类型application/json上回复,或者如果客户端已将*/*添加为accept头,那么我也会在这里返回JSON。对NancyFx MediaRange的困惑
我想执行以下操作会解决我的问题(我已经不再赘述/保密一些代码):
return this.Negotiate
.WithMediaRangeResponse(new MediaRange("MyCustomType"),() => return new Response() {....})
.WithMediaRangeResponse(new MediaRange("application/json"),() => return new Response() {....})
.WithMediaRangeResponse(new MediaRange("*/*"),() => return new Response() {....})
我预计,鉴于此代码,如果接受头包含MyCustomType那么第一表达将被执行,或者,如果accept头包含application/json或*/*,那么它们各自的表达式将被执行。如果没有这三个值中的任何一个请求进入,则会发生另一个动作(还没有弄清楚如何默认为BAD REQUEST)。
但是,似乎正在发生的事情是*/* MediaRange表达式似乎被调用了任何不是MyCustomType或application/json的接受头文件。所以如果我通过“文本/ HTML”它得到了一个有效的回应,这不是我想要的。如果客户端在accept头中传递了*/*,而不是其他任何其他接受头类型的catch-all,我只想匹配*/*。
谢谢,会试试这个 – user2688880