mirror of
https://gitee.com/an-tao/drogon.git
synced 2024-12-02 03:38:03 +08:00
Update status code
This commit is contained in:
parent
b2d0595c60
commit
6fbfe28506
@ -271,7 +271,7 @@ void create_view::newViewSourceFile(std::ofstream &file,const std::string &class
|
|||||||
}
|
}
|
||||||
|
|
||||||
file<<"\tauto res = HttpResponse::newHttpResponse();\n";
|
file<<"\tauto res = HttpResponse::newHttpResponse();\n";
|
||||||
file<<"\tres->setStatusCode(HttpResponse::k200Ok);\n";
|
file<<"\tres->setStatusCode(HttpResponse::k200OK);\n";
|
||||||
file<<"#ifdef CONTENT_TYPE\n";
|
file<<"#ifdef CONTENT_TYPE\n";
|
||||||
file<<"\tres->setContentTypeCode(CONTENT_TYPE);\n";
|
file<<"\tres->setContentTypeCode(CONTENT_TYPE);\n";
|
||||||
file<<"#else\n";
|
file<<"#else\n";
|
||||||
|
@ -5,7 +5,7 @@ void TestController::asyncHandleHttpRequest(const HttpRequestPtr& req,const std:
|
|||||||
//write your application logic here
|
//write your application logic here
|
||||||
auto resp=HttpResponse::newHttpResponse();
|
auto resp=HttpResponse::newHttpResponse();
|
||||||
LOG_DEBUG<<"!!!!!!!!!!1";
|
LOG_DEBUG<<"!!!!!!!!!!1";
|
||||||
resp->setStatusCode(HttpResponse::k200Ok);
|
resp->setStatusCode(HttpResponse::k200OK);
|
||||||
resp->setContentTypeCode(CT_TEXT_HTML);
|
resp->setContentTypeCode(CT_TEXT_HTML);
|
||||||
resp->setBody("hello!!!");
|
resp->setBody("hello!!!");
|
||||||
callback(resp);
|
callback(resp);
|
||||||
|
@ -63,16 +63,47 @@ namespace drogon
|
|||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
enum HttpStatusCode {
|
enum HttpStatusCode {
|
||||||
kUnknown,
|
kUnknown=0,
|
||||||
k101 = 101,
|
k100Continue=100,
|
||||||
k200Ok = 200,
|
k101SwitchingProtocols=101,
|
||||||
|
k200OK=200,
|
||||||
|
k201Created=201,
|
||||||
|
k202Accepted=202,
|
||||||
|
k203NonAuthoritativeInformation=203,
|
||||||
k204NoContent=204,
|
k204NoContent=204,
|
||||||
|
k205ResetContent=205,
|
||||||
|
k206PartialContent=206,
|
||||||
|
k300MultipleChoices=300,
|
||||||
k301MovedPermanently=301,
|
k301MovedPermanently=301,
|
||||||
k302Found=302,
|
k302Found=302,
|
||||||
|
k303SeeOther=303,
|
||||||
k304NotModified=304,
|
k304NotModified=304,
|
||||||
|
k305UseProxy=305,
|
||||||
|
k307TemporaryRedirect=307,
|
||||||
k400BadRequest=400,
|
k400BadRequest=400,
|
||||||
|
k401Unauthorized=401,
|
||||||
|
k402PaymentRequired=402,
|
||||||
|
k403Forbidden=403,
|
||||||
k404NotFound=404,
|
k404NotFound=404,
|
||||||
k405MethodNotAllowed=405,
|
k405MethodNotAllowed=405,
|
||||||
|
k406NotAcceptable=406,
|
||||||
|
k407ProxyAuthenticationRequired=407,
|
||||||
|
k408RequestTimeout=408,
|
||||||
|
k409Conflict=409,
|
||||||
|
k410Gone=410,
|
||||||
|
k411LengthRequired=411,
|
||||||
|
k412PreconditionFailed=412,
|
||||||
|
k413RequestEntityTooLarge=413,
|
||||||
|
k414RequestURITooLarge=414,
|
||||||
|
k415UnsupportedMediaType=415,
|
||||||
|
k416Requestedrangenotsatisfiable=416,
|
||||||
|
k417ExpectationFailed=417,
|
||||||
|
k500InternalServerError=500,
|
||||||
|
k501NotImplemented=501,
|
||||||
|
k502BadGateway=502,
|
||||||
|
k503ServiceUnavailable=503,
|
||||||
|
k504GatewayTimeout=504,
|
||||||
|
k505HTTPVersionnotsupported=505,
|
||||||
};
|
};
|
||||||
|
|
||||||
enum Version {
|
enum Version {
|
||||||
|
@ -434,7 +434,7 @@ void HttpAppFrameworkImpl::onNewWebsockRequest(const HttpRequestPtr& req,
|
|||||||
SHA1(reinterpret_cast<const unsigned char *>(wsKey.c_str()), wsKey.length(), accKey);
|
SHA1(reinterpret_cast<const unsigned char *>(wsKey.c_str()), wsKey.length(), accKey);
|
||||||
auto base64Key=base64Encode(accKey,SHA_DIGEST_LENGTH);
|
auto base64Key=base64Encode(accKey,SHA_DIGEST_LENGTH);
|
||||||
auto resp=HttpResponse::newHttpResponse();
|
auto resp=HttpResponse::newHttpResponse();
|
||||||
resp->setStatusCode(HttpResponse::k101,"Switching Protocols");
|
resp->setStatusCode(HttpResponse::k101SwitchingProtocols);
|
||||||
resp->addHeader("Upgrade","websocket");
|
resp->addHeader("Upgrade","websocket");
|
||||||
resp->addHeader("Connection","Upgrade");
|
resp->addHeader("Connection","Upgrade");
|
||||||
resp->addHeader("Sec-WebSocket-Accept",base64Key);
|
resp->addHeader("Sec-WebSocket-Accept",base64Key);
|
||||||
@ -710,7 +710,7 @@ void HttpAppFrameworkImpl::readSendFile(const std::string& filePath,const HttpRe
|
|||||||
pbuf->sgetn (&str[0],size);
|
pbuf->sgetn (&str[0],size);
|
||||||
infile.close();
|
infile.close();
|
||||||
|
|
||||||
resp->setStatusCode(HttpResponse::k200Ok);
|
resp->setStatusCode(HttpResponse::k200OK);
|
||||||
LOG_INFO << "file len:" << str.length();
|
LOG_INFO << "file len:" << str.length();
|
||||||
resp->setBody(std::move(str));
|
resp->setBody(std::move(str));
|
||||||
|
|
||||||
|
@ -209,29 +209,9 @@ bool HttpContext::processResponseLine(const char *begin, const char *end)
|
|||||||
std::string status_code(start, space - start);
|
std::string status_code(start, space - start);
|
||||||
std::string status_message(space + 1, end - space - 1);
|
std::string status_message(space + 1, end - space - 1);
|
||||||
LOG_TRACE << status_code << " " << status_message;
|
LOG_TRACE << status_code << " " << status_message;
|
||||||
switch (atoi(status_code.c_str()))
|
auto code=atoi(status_code.c_str());
|
||||||
{
|
response_.setStatusCode(HttpResponse::HttpStatusCode(code),status_message);
|
||||||
case 200:
|
|
||||||
response_.setStatusCode(HttpResponse::k200Ok, status_message);
|
|
||||||
break;
|
|
||||||
case 301:
|
|
||||||
response_.setStatusCode(HttpResponse::k301MovedPermanently, status_message);
|
|
||||||
break;
|
|
||||||
case 302:
|
|
||||||
response_.setStatusCode(HttpResponse::k302Found, status_message);
|
|
||||||
break;
|
|
||||||
case 304:
|
|
||||||
response_.setStatusCode(HttpResponse::k304NotModified, status_message);
|
|
||||||
break;
|
|
||||||
case 400:
|
|
||||||
response_.setStatusCode(HttpResponse::k400BadRequest, status_message);
|
|
||||||
break;
|
|
||||||
case 404:
|
|
||||||
response_.setStatusCode(HttpResponse::k404NotFound, status_message);
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
|
@ -208,7 +208,7 @@ namespace drogon
|
|||||||
void addHeader(const char* start, const char* colon, const char* end)
|
void addHeader(const char* start, const char* colon, const char* end)
|
||||||
{
|
{
|
||||||
std::string field(start, colon);
|
std::string field(start, colon);
|
||||||
//field name is case-insensitive.so we transform it to lower;
|
//field name is case-insensitive.so we transform it to lower;(rfc2616-4.2)
|
||||||
std::transform(field.begin(),field.end(),field.begin(),::tolower);
|
std::transform(field.begin(),field.end(),field.begin(),::tolower);
|
||||||
++colon;
|
++colon;
|
||||||
while (colon < end && isspace(*colon)) {
|
while (colon < end && isspace(*colon)) {
|
||||||
|
@ -34,7 +34,7 @@ using namespace drogon;
|
|||||||
HttpResponsePtr HttpResponse::newHttpResponse()
|
HttpResponsePtr HttpResponse::newHttpResponse()
|
||||||
{
|
{
|
||||||
auto res = std::make_shared<HttpResponseImpl>();
|
auto res = std::make_shared<HttpResponseImpl>();
|
||||||
res->setStatusCode(HttpResponse::k200Ok);
|
res->setStatusCode(HttpResponse::k200OK);
|
||||||
res->setContentTypeCode(CT_TEXT_HTML);
|
res->setContentTypeCode(CT_TEXT_HTML);
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
@ -42,7 +42,7 @@ HttpResponsePtr HttpResponse::newHttpResponse()
|
|||||||
HttpResponsePtr HttpResponse::newHttpJsonResponse(const Json::Value &data)
|
HttpResponsePtr HttpResponse::newHttpJsonResponse(const Json::Value &data)
|
||||||
{
|
{
|
||||||
auto res=std::make_shared<HttpResponseImpl>();
|
auto res=std::make_shared<HttpResponseImpl>();
|
||||||
res->setStatusCode(HttpResponse::k200Ok);
|
res->setStatusCode(HttpResponse::k200OK);
|
||||||
res->setContentTypeCode(CT_APPLICATION_JSON);
|
res->setContentTypeCode(CT_APPLICATION_JSON);
|
||||||
Json::StreamWriterBuilder builder;
|
Json::StreamWriterBuilder builder;
|
||||||
builder["commentStyle"] = "None";
|
builder["commentStyle"] = "None";
|
||||||
@ -213,33 +213,86 @@ const std::string HttpResponseImpl::web_content_type_to_string(uint8_t contentty
|
|||||||
const std::string HttpResponseImpl::web_response_code_to_string(int code)
|
const std::string HttpResponseImpl::web_response_code_to_string(int code)
|
||||||
{
|
{
|
||||||
switch(code) {
|
switch(code) {
|
||||||
|
case 100:
|
||||||
|
return "Continue";
|
||||||
|
case 101:
|
||||||
|
return "Switching Protocols";
|
||||||
case 200:
|
case 200:
|
||||||
return "OK";
|
return "OK";
|
||||||
|
case 201:
|
||||||
|
return "Created";
|
||||||
|
case 202:
|
||||||
|
return "Accepted";
|
||||||
|
case 203:
|
||||||
|
return "Non-Authoritative Information";
|
||||||
case 204:
|
case 204:
|
||||||
return "No Content";
|
return "No Content";
|
||||||
|
case 205:
|
||||||
|
return "Reset Content";
|
||||||
|
case 206:
|
||||||
|
return "Partial Content";
|
||||||
|
case 300:
|
||||||
|
return "Multiple Choices";
|
||||||
|
case 301:
|
||||||
|
return "Moved Permanently";
|
||||||
|
case 302:
|
||||||
|
return "Found";
|
||||||
|
case 303:
|
||||||
|
return "See Other";
|
||||||
case 304:
|
case 304:
|
||||||
return "Not Modified";
|
return "Not Modified";
|
||||||
|
case 305:
|
||||||
|
return "Use Proxy";
|
||||||
case 307:
|
case 307:
|
||||||
return "Temporary Redirect";
|
return "Temporary Redirect";
|
||||||
|
|
||||||
case 400:
|
case 400:
|
||||||
return "Bad Request";
|
return "Bad Request";
|
||||||
|
case 401:
|
||||||
|
return "Unauthorized";
|
||||||
|
case 402:
|
||||||
|
return "Payment Required";
|
||||||
case 403:
|
case 403:
|
||||||
return "Forbidden";
|
return "Forbidden";
|
||||||
|
|
||||||
case 404:
|
case 404:
|
||||||
return "Not Found";
|
return "Not Found";
|
||||||
|
|
||||||
case 405:
|
case 405:
|
||||||
return "Method Not Allowed";
|
return "Method Not Allowed";
|
||||||
|
case 406:
|
||||||
|
return "Not Acceptable";
|
||||||
|
case 407:
|
||||||
|
return "Proxy Authentication Required";
|
||||||
|
case 408:
|
||||||
|
return "Request Time-out";
|
||||||
|
case 409:
|
||||||
|
return "Conflict";
|
||||||
|
case 410:
|
||||||
|
return "Gone";
|
||||||
|
case 411:
|
||||||
|
return "Length Required";
|
||||||
case 412:
|
case 412:
|
||||||
return "Preconditions Failed";
|
return "Precondition Failed";
|
||||||
|
case 413:
|
||||||
|
return "Request Entity Too Large";
|
||||||
|
case 414:
|
||||||
|
return "Request-URI Too Large";
|
||||||
|
case 415:
|
||||||
|
return "Unsupported Media Type";
|
||||||
|
case 416:
|
||||||
|
return "Requested range not satisfiable";
|
||||||
|
case 417:
|
||||||
|
return "Expectation Failed";
|
||||||
|
case 500:
|
||||||
|
return "Internal Server Error";
|
||||||
|
case 501:
|
||||||
|
return "Not Implemented";
|
||||||
|
case 502:
|
||||||
|
return "Bad Gateway";
|
||||||
|
case 503:
|
||||||
|
return "Service Unavailable";
|
||||||
|
case 504:
|
||||||
|
return "Gateway Time-out";
|
||||||
|
case 505:
|
||||||
|
return "HTTP Version not supported";
|
||||||
default:
|
default:
|
||||||
if(code >= 100 && code < 200)
|
if(code >= 100 && code < 200)
|
||||||
return "Informational";
|
return "Informational";
|
||||||
|
@ -125,7 +125,7 @@ void HttpServer::onMessage(const TcpConnectionPtr& conn,
|
|||||||
auto wsConn=std::make_shared<WebSocketConnectionImpl>(conn);
|
auto wsConn=std::make_shared<WebSocketConnectionImpl>(conn);
|
||||||
newWebsocketCallback_(context->request(),[=](const HttpResponsePtr &resp) mutable
|
newWebsocketCallback_(context->request(),[=](const HttpResponsePtr &resp) mutable
|
||||||
{
|
{
|
||||||
if(resp->statusCode()==HttpResponse::k101)
|
if(resp->statusCode()==HttpResponse::k101SwitchingProtocols)
|
||||||
{
|
{
|
||||||
context->setWebsockConnection(wsConn);
|
context->setWebsockConnection(wsConn);
|
||||||
}
|
}
|
||||||
@ -166,7 +166,7 @@ void HttpServer::onRequest(const TcpConnectionPtr& conn, const HttpRequestPtr& r
|
|||||||
if(!response)
|
if(!response)
|
||||||
return;
|
return;
|
||||||
response->setCloseConnection(_close);
|
response->setCloseConnection(_close);
|
||||||
//if the request method is HEAD,remove the body of response
|
//if the request method is HEAD,remove the body of response(rfc2616-9.4)
|
||||||
if(_isHeadMethod)
|
if(_isHeadMethod)
|
||||||
response->setBody(std::string());
|
response->setBody(std::string());
|
||||||
if(response->getContentTypeCode()<CT_APPLICATION_OCTET_STREAM&&
|
if(response->getContentTypeCode()<CT_APPLICATION_OCTET_STREAM&&
|
||||||
|
@ -25,7 +25,7 @@ HttpResponsePtr NotFound::genHttpResponse(const HttpViewData& NotFound_view_data
|
|||||||
NotFound_tmp_stream << "<!-- a padding to disable MSIE and Chrome friendly error page -->\n";
|
NotFound_tmp_stream << "<!-- a padding to disable MSIE and Chrome friendly error page -->\n";
|
||||||
NotFound_tmp_stream << "<!-- a padding to disable MSIE and Chrome friendly error page -->\n";
|
NotFound_tmp_stream << "<!-- a padding to disable MSIE and Chrome friendly error page -->\n";
|
||||||
auto res = HttpResponse::newHttpResponse();
|
auto res = HttpResponse::newHttpResponse();
|
||||||
res->setStatusCode(HttpResponse::k200Ok);
|
res->setStatusCode(HttpResponse::k200OK);
|
||||||
#ifdef CONTENT_TYPE
|
#ifdef CONTENT_TYPE
|
||||||
res->setContentTypeCode(CONTENT_TYPE);
|
res->setContentTypeCode(CONTENT_TYPE);
|
||||||
#else
|
#else
|
||||||
|
Loading…
Reference in New Issue
Block a user