Jar*_*rod 21 .net c# servicestack
我想将ServiceStack的默认格式设置为JSON,而不是从浏览器访问服务时通常返回的HTML格式的响应.我知道这可以通过发送?format = json参数或将Accept标头设置为application/json在每个请求中指定.有没有办法改变这一点,而不必依赖请求中的这些提示?
myt*_*thz 44
除了指定它与查询字符串格式= JSON? ,通过附加格式 .EXT到路线的终点,例如:/rockstars.json,或通过指定HTTP报头(在你的HttpClient): Accept: application/json.
否则,如果您的HttpClient未发送Accept标头,您可以在AppHost中将JSON指定为默认内容类型:
SetConfig(new HostConfig {
DefaultContentType = MimeTypes.Json
});
Run Code Online (Sandbox Code Playgroud)
ServiceStack中的所有配置选项都在此处设置.
从Web浏览器调用Web服务时的问题是,它们通常要求Accept: text/html而不是JSON,如果启用了ServiceSack合同,则返回HTML.
要确保返回JSON,您可能还希望禁用HTML功能:
SetConfig(new HostConfig {
EnableFeatures = Feature.All.Remove(Feature.Html),
});
Run Code Online (Sandbox Code Playgroud)
否则,如果要覆盖Accept标头,可以强制服务始终使用以下任何方式返回json以自定义HTTP响应,例如:
使用过滤器(内置AddHeader):
[AddHeader(ContentType=MimeTypes.Json)]
public object Any(Request request) { ... }
Run Code Online (Sandbox Code Playgroud)
在服务中设置响应:
public object Any(Request request)
{
base.Response.ContentType = MimeTypes.Json;
return dto;
}
Run Code Online (Sandbox Code Playgroud)
返回装饰响应:
return new HttpResult(dto, MimeTypes.Json);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7844 次 |
| 最近记录: |