我目前正在实现一个RESTful API(没什么大不了的,只是为了我正在开发的博客引擎)并且我对HTTP状态兼容性有一些疑问.
要创建一个新的博客文章,我必须做一个POST请求,如果一切顺利,将创建帖子,然后以与请求相对应的格式返回.
我在这个页面上从维基百科阅读了有关200 OK状态的信息
在POST请求中,响应将包含描述或包含操作结果的实体
好的.但后来有201 Created状态:
请求已完成,并导致创建新资源.
所以我的问题是:当一个POST请求成功并创建一个新的博客帖子时,我发回这两个http状态代码,或者一次只允许一个?
我没有从RFC获得这些信息,以为我没有完全阅读它.
我想一次只允许一个HTTP状态,但我应该使用哪一个?
编辑(新问题):如果操作正在编辑现有的博客帖子怎么办?我在URI上有一个PUT请求,这次我还要发回200 OK一个Location:标题呢?因为这个位置与PUT请求的URI完全相同,除了它应该是GET请求,这样可以吗?
我现在是ruby和rails的新手几个月了.我参加了红宝石和铁轨课程,这让我可以创建一个餐馆博客网站.好吧,我最近开始改造网站,为我的朋友.因此,它仅仅是改变图片,措辞等方面的一些东西.当我完全创建另一个博客时,我创建了一个登记页面登录页面,他们需要创建一个登录以创建和发布评论等.一切似乎当我为本地主机服务器运行rails时工作正常,但是当我为站点创建一个登录以确保一切正常时.它不允许我创建一个登录,并在我的rails服务器中不断收到错误.见下文!我搜索和搜索,似乎无法找到解决方案.我唯一真正改变的是一些图片和一些措辞.我没有搞乱编码登录,创建登录代码等.任何帮助都会很好,我将继续搜索.在此之前我得到了一个内容长度错误,所以我关注了这个网站http://theresa.multimediatechnology.at/webrick-warnings-in-ruby-1-9-3/.这似乎解决了这个问题,但现在我得到了以下内容.谢谢!
whitey7@whitey7:~/poe$ rails s
=> Booting WEBrick
=> Rails 3.2.3 application starting in development on
=> Call with -d to detach
=> Ctrl-C to shutdown server
[2012-07-28 08:59:58] INFO WEBrick 1.3.1
[2012-07-28 08:59:58] INFO ruby 1.9.3 (2012-04-20) [x86_64-linux]
[2012-07-28 08:59:58] INFO WEBrick::HTTPServer#start: pid=4690 port=3000
Started GET "/reviews/register" for 127.0.0.1 at 2012-07-28 09:00:04 -0400
Processing by ReviewsController#register as HTML
Rendered reviews/register.html.erb within layouts/application (5.9ms)
Completed 200 OK in 75ms (Views: 73.8ms | ActiveRecord: 0.0ms)
Started GET "/assets/reviews.css?body=1" for 127.0.0.1 …Run Code Online (Sandbox Code Playgroud) 我的一个控制器中有一个after_filter,只有在响应状态代码为200时才能执行.否则我想跳过它.那可能吗?
可以说我有一个单页Web应用程序,其中包含项目列表,用户可以在其中单击某个项目以查看有关该项目的更多信息。使用对URL http://www.example.com/item/[id]的AJAX GET请求,异步加载实际的项目信息,并在加载时显示。
问题是,如果给定ID的商品不存在,该怎么办?现在,该请求返回状态码200,但实际内容表明该商品不存在。这似乎是个坏主意,所以我想让它返回一个状态代码,该状态代码在某种意义上表示请求失败,因为该项目不存在(例如,它也允许我将其捕获到失败处理程序中)在jQuery的ajax函数中)。
这是一种好习惯吗(仅当该项目实际存在于数据库中时才返回状态代码200),如果是,那么在这种情况下哪种状态代码将是最佳选择?
javascript ajax jquery http-status-codes single-page-application
我正在我的HTTP服务中编写一个新的端点,它建立在Play框架上,并返回一个特定错误的自定义状态代码(442在这种情况下).当我用cURL测试端点时,我收到了预期的错误代码:
...
< HTTP/1.1 442 Client Error (442)
....
Run Code Online (Sandbox Code Playgroud)

我想要做的是自定义"客户端错误"文本,这样响应实际上会读取如下内容:
442 Forced Password Reset
Run Code Online (Sandbox Code Playgroud)
这是可能的,还是在规范中,4xx类的任何自定义状态代码都被所有客户端解释为"客户端错误"?
考虑创建用户的API调用.成功后,将创建用户并发送确认电子邮件.响应状态代码为201.
如果未创建用户,则响应状态代码为422.
如果创建用户,响应状态代码应该是什么?但是发送确认电子邮件失败了?
题
如何修改状态代码文本(说明/标题)?
例
例如:我想200 (Ok)改为200 (My Custom Text)
应将描述
我想用自定义状态代码(未预留)431创建HTTP响应.我想修改它的文本:
200 (OK)400 (Bad Request)431 (My message here)我试过了:
var response = new HttpResponseMessage()
{
StatusCode = (HttpStatusCode) 431,
};
response.Headers.Add("Status Code", "431 My custom text"); // This throws error.
Run Code Online (Sandbox Code Playgroud) 我正在运行一个安全和不安全域(包括http://和https://)的列表,并希望返回其状态代码.这怎么可能在ASP.Net Core 1.0中?
到目前为止,我有
foreach(var item in _context.URLs.ToList())
{
// Do something here with item.Domain to check for status
// For example, if item.Domain was https://example.com..
}
Run Code Online (Sandbox Code Playgroud)
我用这种方法用常规ASP.Net语法尝试了它:
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(item.Domain);
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Run Code Online (Sandbox Code Playgroud)
问题是,GetResponse在ASP.Net Core中不起作用
任何人都可以帮我解决一个有效的解决方案,以便返回的变量是状态吗?
例如:200,500,404..
编辑 - 这是我的完整控制器和解决方案:
using System;
using System.Collections.Generic;
using System.Linq;
using Microsoft.AspNetCore.Mvc;
using MyApp.Models;
using System.Threading.Tasks;
using System.Net;
using System.Net.Http;
namespace MyApp.Controllers.Api
{
public class URLsController : Controller
{ …Run Code Online (Sandbox Code Playgroud) 我是laravel的新手,并成功地将用户从控制器引导到适当的视图,但在某些情况下,我想设置一个http状态代码,但无论发送什么,它总是返回200的响应代码.
这是我的测试控制器功能的代码:
public function index()
{
$data=array();
return response()->view('layouts.default', $data, 201);
}
Run Code Online (Sandbox Code Playgroud)
如果我在路由中使用相同的代码,它将返回正确的http状态代码,就像我从命令行使用curl -I调用页面时所看到的那样.
curl -I http://localhost/
Run Code Online (Sandbox Code Playgroud)
是否有理由说它在控制器内不起作用,但在路由呼叫中是否有效?
我确信有些东西我只是误解为新手,但即使以下代码在路由中工作但不是控制器:
public function index()
{
abort(404);
}
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
我正在构建一个应用程序,其中我试图为每个请求构建自己的日志记录系统。
对于每个请求,我想记录时间戳,使用的方法,路由,最后是已发送到客户端的响应代码。
我现在有以下代码:
// index.js
const express = require('express');
const bodyParser = require('body-parser');
const cors = require('cors');
const app = express();
app.use(bodyParser.json());
app.use(cors());
app.use(require('./lib/logging'));
app.get('/', (req, res, next) => {
res.send('hello world !');
});
app.listen(3001);
// ./lib/logging.js
const moment = require('moment');
const chalk = require('chalk');
const log = console.log;
module.exports = (req, res, next) => {
let now = `[${chalk.green(moment().format('HH:mm:ss'))}]`;
let method = chalk.magenta(req.method);
let route = chalk.blue(req.url);
let code = chalk.yellow(res.statusCode); // Always 200
log(`${now} ${method} request received on …Run Code Online (Sandbox Code Playgroud)asp.net ×2
c# ×2
http ×2
javascript ×2
rest ×2
ajax ×1
asp.net-core ×1
callback ×1
controller ×1
express ×1
jquery ×1
laravel ×1
laravel-5 ×1
middleware ×1
node.js ×1
php ×1
ruby ×1