我的网站上有一个报告网站运行状况的页面,并设置HTTP 200状态代码,一切正常.外部监控程序使用此页面检查站点是否已启动.
当这个页面被点击时,我进行一个非常轻量级的DB proc调用,看看数据库是否正常运行.如果失败,我想向监视器返回一个有意义的HTTP错误代码,让它知道一切都不好.
根据我可以解决的问题,没有HTTP状态说"我依赖的第三方组件已关闭",那么在这种情况下你会返回什么?
503服务不可用...?
我RestTemplate用来对我们的服务进行HTTP调用,返回一个简单的JSON响应.我根本不需要解析那个JSON.我只需要返回我从该服务中获得的任何内容.
所以我将其映射到String.class并将实际值JSON response作为字符串返回.
RestTemplate restTemplate = new RestTemplate();
String response = restTemplate.getForObject(url, String.class);
return response;
Run Code Online (Sandbox Code Playgroud)
现在的问题是 -
我想HTTP Status codes在点击URL后提取.如何从上面的代码中提取HTTP状态代码?我是否需要以目前的方式对其进行任何更改?
更新: -
这是我尝试过的,我能够得到回复和状态代码.但是,我是否总是需要设置HttpHeaders和Entity对象,如下所示我在做什么?
RestTemplate restTemplate = new RestTemplate();
//and do I need this JSON media type for my use case?
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
//set my entity
HttpEntity<Object> entity = new HttpEntity<Object>(headers);
ResponseEntity<String> out = restTemplate.exchange(url, HttpMethod.GET, entity, String.class);
System.out.println(out.getBody());
System.out.println(out.getStatusCode());
Run Code Online (Sandbox Code Playgroud)
几个问题 - 我需要有,MediaType.APPLICATION_JSON因为我只是调用url返回响应,它可以返回JSON或XML或简单的字符串.
假设我有一个简单的Jersey REST资源,如下所示:
@Path("/foos")
public class MyRestlet
extends BaseRestlet
{
@GET
@Path("/{fooId}")
@Produces(MediaType.APPLICATION_XML)
public Response getFoo(@PathParam("fooId") final String fooId)
throws IOException, ParseException
{
final Foo foo = fooService.getFoo(fooId);
if (foo != null)
{
return Response.status(Response.Status.OK).entity(foo).build();
}
else
{
return Response.status(Response.Status.NOT_FOUND).build();
}
}
}
Run Code Online (Sandbox Code Playgroud)
基于上面的代码,返回NOT_FOUNDstatus(404),或者我应该返回204,还是其他一些更合适的代码是正确的吗?
提前谢谢了!
当客户端发布错误数据时,我应返回什么HTTP状态代码(例如,当预期整数时为字符串)?
我一直在使用400 Bad Request,但是当我阅读似乎更适用于HTTP协议错误的HTTP文档时.
我想使用状态代码,以便Flash和AJAX客户端可以区分成功,错误数据和服务器错误,而无需解析响应.
我不清楚你何时应该而且不应该返回HTTP 412:Precondition Failed,Web服务错误?我正在考虑在验证数据时使用它.例如,如果客户端POST的XML数据和该数据缺少必需的数据元素,则使用412和错误描述进行响应.
这与使用HTTP 412响应的精神一致,还是应该使用其他东西(例如,另一个http错误代码或Web应用程序异常)?
rest web-services http http-status-codes http-status-code-412
项目:在.net 4.0框架下运行的ASP MVC 4:
在VS 2010 Express下运行应用程序(或在本地计算机上的IIS 7.5下部署并运行)时,操作的以下(伪代码)结果按预期工作
[HttpPost]
public ActionResult PostWord(Model model)
{
....
Response.StatusCode = 400;
Return new JsonResult { data = new {fieldName = "Word", error = "Not really a word!" } };
Run Code Online (Sandbox Code Playgroud)
(我已经分配了JsonResult对象的ContentType和ContentEncoding属性,但行为没有区别)
当deployable移动到Web主机(使用IIS 7)时,firebug告诉我响应是按预期的(400)但响应中没有JSON(即没有任何类型的文本).如果我删除该行
Response.StatusCode = 400;
Run Code Online (Sandbox Code Playgroud)
从动作中,JSON完美地形成在响应中,但当然响应状态代码是200(OK),这会干扰消费的javascript和适当的函数调用.
关于可能发生的事情以及如何解决这个问题的任何想法?谢谢
我正在创建一个RESTful服务来为Web应用程序提供数据.我有两个相关的问题.
我打算用以下代码回复请求:
这是RESTful服务的推荐方式吗?
WWW-Authenticate401响应应该提供什么标题?我在维基百科上阅读(可能不是最准确的资源,但它对我有用)401响应必须包含一个WWW-Authenticate标题,但是在进一步搜索时我找不到任何资源说明这个值意味着什么以及它应该是什么.
我找到了几个有关此标题的SO问题和论坛主题,它们似乎都是关于OAuth的,建议不要使用401状态代码或者说你可以做些什么.
此标头应包含的正确值是什么?
rest http xmlhttprequest http-status-codes http-status-code-401
我在Laravel文档中找不到重定向为301/302的信息.
在我的routes.php文件中,我使用:
Route::get('foo', function(){
return Redirect::to('/bar');
});
Run Code Online (Sandbox Code Playgroud)
这是默认的301或302吗?有没有办法手动设置它?知道为什么会从文档中省略这一点吗?
难道要考虑好的做法,以重新使用RFC HTTP状态代码这个样子,或者我们应该组成新的恰好映射到我们具体的错误原因是什么?
我们正在围绕几个遗留应用程序设计一个Web服务API.
除了响应主体中的JSON/XML数据结构之外,我们还希望返回对Web缓存和开发人员有意义的HTTP状态代码.
但是,如何将不同类别的错误映射到适当的HTTP状态代码?团队中的每个人都同意以下内容:
如果1234不存在,则GET/package/1234返回404 Not Found
如果"next_checkpoint" 和 1234有效请求,则GET/package/1234/next_checkpoint返回400 Bad Request,但next_checkpont在这里没有意义......
等等......但是,在某些情况下,事情需要比"400"更具体 - 例如:
POST/dispatch /?for_package = 1234返回412 Precondition如果/ dispatch和package 1234都存在则失败,但是1234尚未准备好进行调度.
有没有办法优雅地处理http状态代码422.我在这里寻找最好的做法.我知道HttpStatusCode是一个枚举所以我试过的是这个,
HttpStatusCode Unprocessable = (HttpStatusCode)422;
if (Response == (HttpStatusCode)422)
Run Code Online (Sandbox Code Playgroud)
但是不允许我比较它.我在这里做错了吗?
什么是在运行时添加此状态代码的最佳方法.
rest ×5
http ×3
web-services ×2
c# ×1
java ×1
json ×1
laravel ×1
laravel-4 ×1
resttemplate ×1
url ×1