我知道 ASP.NET 有一个全局处理程序 Application_EndRequest 处理程序,我可以在其中更改 Context.Response.StatusCode,并将其设置为 200,这是我的愿望。
现在有了 asmx Web 服务,我不太确定应该把这个逻辑放在哪里。我知道我绝对对编写 ISAPI 过滤器不感兴趣,而且我并没有真正在 ASP.NET 环境中运行,所以 HTTPModule可能对我来说也没什么用。
有什么建议。在 WCF 中运行它会为我提供一种在 Web 服务上设置它的更简单的机制吗?
HttpsUrlConnection我正在通过或HttpUrlConnection根据设置从我的 Android 应用程序连接到网络服务器。目前我没有遇到任何问题,但昨天我开始收到http/https status回复-1。即使存在某种错误,网络服务器也无法返回给我。我连接的服务器被设计为在出现某种问题时errorCode返回。errorString这是我正在使用的代码,但我认为问题不在这里。
public void UseHttpConnection(String url, String charset, String query) {
try {
HttpURLConnection connection = (HttpURLConnection) new URL(url)
.openConnection();
connection.setDoOutput(true);
connection.setRequestMethod("POST");
connection.setRequestProperty("Charset", charset);
connection.setRequestProperty("Content-Type",
"application/x-www-form-urlencoded;charset=" + charset);
OutputStream output = null;
try {
output = connection.getOutputStream();
output.write(query.getBytes(charset));
} catch (IOException e) {
e.printStackTrace();
} finally {
if (output != null)
try {
output.close();
} catch (IOException logOrIgnore) {
}
}
int status = ((HttpURLConnection) connection).getResponseCode();
Log.i("", …Run Code Online (Sandbox Code Playgroud) 我的 API 有一个限制,每页允许的最大项目数为 50。
例如,如果输入 51,返回给消费者的正确 HTTP 代码是什么?
我考虑过 HTTP 400(错误请求),因为消费者“知道”(基于 API 约定)最大值为 50。在这种情况下,我还将返回包含所描述错误的响应。
分页同样的问题。如果我有 20 行/对象,并且 API 使用者将 21 放入偏移参数中,我是否应该返回总计 = 0 的 HTTP 200?
我不确定应该向客户端返回什么状态代码。当请求的参数超出范围时。我的 API 支持从第 1 页到(比方说)第 50 页的分页。服务器应返回哪个状态代码
page < 1 || page > 50
我正在使用 Datatables 1.10.5 并且定义了 ajax 错误处理程序。当错误触发时,我需要访问实际的 http 状态代码,以便我可以查看用户的会话时间是否已过期 (HTTP 401) 以及后端是否出现问题(例如 HTTP 500 错误)。现在 techNote 始终是 7。
如何从 ajax 事务中获取难以捉摸的 HTTP 状态代码?我在下面尝试过,但它不火。
$("#example").ajaxError(function(event, jqxhr, request, settings){
alert("Failure HTTP Code:"+jqxhr.status);
});
Run Code Online (Sandbox Code Playgroud)
和
$.fn.dataTable.ext.errMode = 'throw';
$('#example').on('error.dt', function(e, settings, techNote, message) {
console.log( 'An error has been reported by DataTables: ', message);
});
Run Code Online (Sandbox Code Playgroud)
没有我需要的信息,或者至少我无法在任何传递的变量中找到它。
我需要针对具有不同 HTTP 响应代码的 URL 测试我的脚本。如何获取响应代码 300、303 或 307 等的示例/示例现有 URL?
谢谢!
我有以下代码(对于端点 /things/{id}/permission-to-do/views.py
class PermissionsToDo(APIView):
authentication_classes = (TokenAuthentication,)
permission_classes = (IsAuthenticated,)
def get(self, request,*args,**kwargs):
thing_id = kwargs.get('pk')
thing = Thing.objects.filter(pk=thing_id,is_active=True)
serializer = serializers.GetDoPermissionSerializer(thing[0],context={'request': request})
return Response(serializer.data, status=status.HTTP_200_OK)
Run Code Online (Sandbox Code Playgroud)
序列化程序.py
class serializers.GetDoPermissionSerializer(serializers.ModelSerializer):
def _can_do(self, thing):
return thing.can_be_done_by(self.context['request'].user)
can_do = serializers.SerializerMethodField('_can_do')
class Meta:
model = Thing.objects.filter
fields = ('can_do',)
extra_kwargs = {
'can_do': {'read_only': True},
}
Run Code Online (Sandbox Code Playgroud)
该thing.can_be_done_by(user)方法返回一个布尔值。这适用于正确的请求,但我想添加一种方法来验证请求并为客户端错误发送适当的状态代码,例如status.HTTP_400_BAD_REQUEST
我的想法是在views.py 中添加一个:
if serializer.is_valid():
return Response(serializer.data, status=status.HTTP_200_OK)
else:
return Response(SOMETHING?,status.HTTP_400_BAD_REQUEST)
Run Code Online (Sandbox Code Playgroud)
如果我进行评估,serializer.is_valid()我会收到一条错误消息:
'Cannot call `.is_valid()` as no `data=` keyword argument was …Run Code Online (Sandbox Code Playgroud) I want to set an http status code in my GraphQL authentication query, depending on if auth attempt was successful (200), unauthorised (401) or missing parameters (422).
I am using Koa and Apollo and have configured my server like so:
const graphqlKoaMiddleware = graphqlKoa(ctx => {
return ({
schema,
formatError: (err) => ({ message: err.message, status: err.status }),
context: {
stationConnector: new StationConnector(),
passengerTypeConnector: new PassengerTypeConnector(),
authConnector: new AuthConnector(),
cookies: ctx.cookies
}
})
})
router.post("/graphql", graphqlKoaMiddleware)
Run Code Online (Sandbox Code Playgroud)
As you can see, …
在我的 ASP.NET Core API 后端,我Status 204在没有数据时发送,但我在前端注意到,我的fetch调用仍然显示response.ok.
两个问题:
Status 204什么?我的React/Redux应用程序中的当前代码如下所示:
export const apiCall = () => {
return (dispatch) => fetch("/api/get", fetchOptions)
.then((response) => {
if(response.ok) {
// Do something
} else {
// Couldn't get data!
}
})
};
Run Code Online (Sandbox Code Playgroud)
这是我处理fetch调用的标准代码块。我应该如何修改它来处理Status 204场景?
一切运行良好,API(flask)很好地返回数据。但是,当我尝试自定义响应代码时,我无法做到这一点。
以下是我尝试过的两种方法:
from flask import make_response
dictionary = {1:'a', 2:'b'}
resp = make_response(dictionary,1001)
return resp
#In developer tools, I could see the data, but status-code is 200
Run Code Online (Sandbox Code Playgroud)
。
from flask import Response
dictionary = {1:'a', 2:'b'}
resp = Response(dictionary, status = 1001)
return resp
#Here again, I see the data, but the status code is 200
Run Code Online (Sandbox Code Playgroud)
如何将状态代码设置为其他内容?
.net ×1
ajax ×1
android ×1
api-design ×1
datatables ×1
fetch-api ×1
flask ×1
graphql ×1
http ×1
javascript ×1
koa ×1
python ×1
response ×1
rest ×1
validation ×1
web-services ×1