首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >限制支持的“content-type”+ default content-type

限制支持的“content-type”+ default content-type
EN

Stack Overflow用户
提问于 2012-11-06 03:51:42
回答 1查看 735关注 0票数 1

使用ServiceStack 3.9.2x。

开箱即用(如元数据页面所示)服务堆栈提供了对一系列内容类型的内置支持- xml、json、jsv等。告诉ServiceStack限制受支持内容集的最佳方式是什么?例如,我的服务只知道如何使用JSON,并且我不希望ServiceStack接受带有"Content-type: application/xml“或"Accept: application/xml”头的请求。在上述情况下,我希望ServiceStack以406 (不可接受)响应响应,理想情况下在正文中包含受支持的内容集(根据HTTP1.1规范)。

另外,对于没有显示Accept或Content-Type头的请求,ServiceStack如何确定默认的内容类型(我想我现在看到它呈现超文本标记语言了)?在这些情况下,有没有办法告诉ServiceStack采用特定的内容类型?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-11-06 04:48:38

请参阅此答案以了解如何在ServiceStack中设置默认内容类型:ServiceStack default format

您可以使用Request Filter通过以下方式检测所请求的内容类型:

代码语言:javascript
复制
httpReq.ResponseContentType

在你的全局请求过滤器中,你可以选择允许它(什么都不做)或者直接写到响应中,例如406和你想要的支持内容列表。

ServiceStack操作顺序

Implementation architecture diagram显示了ServiceStack中发生的操作顺序的可视提示。其中:

  1. EndointHostConfig.RawHttpHandlers在任何事情之前执行,例如,返回任何completely.
  2. The IHttpHandler旁路,并在请求DTO is executed
  3. Then IAppHost.PreRequestFilters 优先级<0之前执行 get any Global Request Filters get only)
  4. Followed by >= ServiceStack IAppHost.PreRequestFilters Request Filters (仅限新请求筛选器)>=
  5. Then your Service is executed
  6. Action Response Filters (IAppHost.PreRequestFiltersFilters by <>C32IAppHost.PreRequestFilters> with <E133>Priority< 0
  7. 然后Global Response Filters
  8. ,然后是Response Filter Attributes with Priority >= 0

无论何时关闭任何过滤器中的响应,例如httpRes.Close(),响应的处理都是短路的,并且不会对该请求进行进一步的处理。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13239307

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档