我正在创建一个基于 Django 的客户端,旨在从 Web 服务返回数据。该项目的目标是根据用户在表单中选择的值从 Web 服务将数据返回给用户。表单提交后,会生成一个查询字符串,发送到 Web 服务,并以字符串形式返回页面数据。目前,该数据在浏览器中显示给用户。我想提供允许用户单击按钮并下载数据的功能。
当用户单击浏览器中的下载按钮时,如何将数据返回给用户?如何使相同数据的不同选项可用(即 application/json 或 text/csv)?
我正在尝试执行以下操作,但失败了:
返回我的模板的 render_to_response 对象。我将表单以及各种表单中的数据传递给模板。
def view(request):
#Do stuff, get data as string
#Get data into needed formats (see utils.py)
jsonData = jsonToJsonFile(dataString, fileName)
return render_to_response('template.html', {'someForm' : aForm,
'regularData' : stringData,
'jsonData' : jsonData...})
Run Code Online (Sandbox Code Playgroud)
包含将数据作为字符串并返回响应对象的函数。这部分我不确定我是否做得正确。我在视图中调用这些函数,以将 jsonData (和 csvData)从原始数据字符串转换为正确的格式。
def jsonToJsonFile(dataString, fileName):
#Get the data as json
theData = json.dumps(dataString)
#Prepare to return a json file
response = HttpResponse(theData, mimetype = 'application/json')
response['Content-Disposition'] …Run Code Online (Sandbox Code Playgroud) 当我们输入一个 url 并将其从浏览器发送到 http 服务器时,我们会从服务器收到响应,有时一个 url 会有多个 http 响应的请求,有没有一种方法可以知道哪个 http 响应包是最终的?
我经常python twisted查看响应标头,但无法弄清楚第一个标头和最终标头的区别。
我有一个 JavaScript 书签,当用户位于其他页面(即我的服务器上没有页面)时,它会将信息发布到(Flask 支持的)服务器。我不想通过我的服务器响应劫持用户的会话来中断用户的浏览。
我最初的想法是我可以以某种方式抑制 Flask 的 HTTP 响应;阻止它向客户端发送任何内容,这样它们就不会被神秘地重定向。我希望我可以通过从视图返回空值来做到这一点。
然后我想这可能是一些 HTTP 响应,让客户端知道信息已成功提交,但会将客户端留在当前页面。假设标题值类似于“这是您请求的结果,但您不应更改当前显示”?
我正在尝试显示一个网页,但由于它不会将对象视为字符串,因此无法正确显示换行符(显示\n)。我怎样才能正确地使结果成为一个字符串,因为这似乎不起作用。谢谢!
result = urllib.request.urlopen(requesturl).read()
return str(result)
Run Code Online (Sandbox Code Playgroud) 我正在使用 Web Api 2 创建 1 个用户。下面是代码
[HttpPost]
public HttpResponseMessage UpdateUserData(User user)
{
try
{
//Code
.
.
user.Update();
return Request.CreateResponse(HttpStatusCode.OK, true);
}
catch (Exception ex)
{
ExceptionLogger.LogException(ex);
return Request.CreateErrorResponse(HttpStatusCode.InternalServerError, "error");
}
}
Run Code Online (Sandbox Code Playgroud)
我试图从后面的代码中调用这个方法
using (HttpClient client = new HttpClient())
{
client.BaseAddress = new Uri("http://localhost:65486/");
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
var response = client.PostAsJsonAsync("api/Stock/UpdateUserData", userObject).Result;
if (response.IsSuccessStatusCode)
{
using (HttpContent content = response.Content)
{
Task<string> result = content.ReadAsStringAsync();
string final = result.Result;
}
}
else
{
//code
}
}
Run Code Online (Sandbox Code Playgroud)
现在我有几个疑问
我们可以在 HttpResponseMessage …
我的服务器中有一个非常简单的 http 响应,我在其中对结构进行了 json 编码。但它发送的只是一个空白{}
我不知道我是否做错了,但我没有错误。这是我的 json 编码:
// Set uuid as string to user struct
user := User{uuid: uuid.String()}
fmt.Println(user) // check it has the uuid
responseWriter.Header().Set("Content-Type", "application/json")
responseWriter.WriteHeader(http.StatusCreated)
json.NewEncoder(responseWriter).Encode(user)
Run Code Online (Sandbox Code Playgroud)
在接收端,数据有:
Content-Type application/json
Content-Length 3
STATUS HTTP/1.1 201 Created
{}
Run Code Online (Sandbox Code Playgroud)
为什么它不给我 uuid 数据?我的编码有问题吗?
我是 Mockito 测试的新手,正在测试 GET 请求。
我已经模拟了这个调用,但现在我需要返回,HttpResponse<Cars[]>因为这些值稍后会在 for 循环中使用。
如何创建一个HttpResponse包含Car对象数组的虚拟对象。
类中使用Get请求的方法CarProvider是:
public HttpResponse<Cars[]> getCars(String carId, String carname) {
return Unirest.get(endpointUrl)
.header("Accept", MediaType.APPLICATION_JSON)
.queryString("carId",cardId)
.queryString("carname",carname)
.asObject(Cars[].class);
}
Run Code Online (Sandbox Code Playgroud)
这CarsUsers在以下方法的另一个类中使用:
public List<Cars> getCars(String carId, String carname) {
HttpResponse<Cars[]> response = carProvider.getCars(carId, carname);
for(Cars car: response.getBody){
//use car and do something
}
Run Code Online (Sandbox Code Playgroud)
我的测试方法如下:
public class TestClass {
@Mock
HttpResponse<Cars[]> httpresponse;
@Mock
CarsProvider carsProvider;
@Mock
CarsUser carsUser;
@Test
public void getCarsTest(){
Mockito.when(carsUser.getCars(Matchers.anyString(),
Matchers.anyString())).thenReturn(getDummyCarsList());
Mockito.when(carsProvider.getCars(Matchers.anyString(),
Matchers.anyString())).thenReturn(httpResponse);
} …Run Code Online (Sandbox Code Playgroud) 我目前正在使用 Polly 来限制我发送的请求数量。这是我目前的政策:
private AsyncPolicyWrap<HttpResponseMessage> DefineAndRetrieveResiliencyStrategy()
{
HttpStatusCode[] retryCodes = {
HttpStatusCode.InternalServerError,
HttpStatusCode.BadGateway,
HttpStatusCode.GatewayTimeout
};
var waitAndRetryPolicy = Policy
.HandleResult<HttpResponseMessage>(e => e.StatusCode == HttpStatusCode.ServiceUnavailable || e.StatusCode == (HttpStatusCode)429)
.WaitAndRetryAsync(10,
attempt => TimeSpan.FromSeconds(5), (exception, calculatedWaitDuration) =>
{
_log.Info($"Bitfinex API server is throttling our requests. Automatically delaying for {calculatedWaitDuration.TotalMilliseconds}ms");
}
);
var circuitBreakerPolicyForRecoverable = Policy
.Handle<HttpResponseException>()
.OrResult<HttpResponseMessage>(r => retryCodes.Contains(r.StatusCode))
.CircuitBreakerAsync(
handledEventsAllowedBeforeBreaking: 3,
durationOfBreak: TimeSpan.FromSeconds(3),
onBreak: (outcome, breakDelay) =>
{
_log.Info($"Polly Circuit Breaker logging: Breaking the circuit for {breakDelay.TotalMilliseconds}ms due to: {outcome.Exception?.Message ?? …Run Code Online (Sandbox Code Playgroud) 我正在开发一个请求删除资源的 API。如果资源正在使用中,即引用其他类型的资源,则不允许删除它。此外,使用中的资源极不可能被释放并且将来有资格被删除。在这种情况下,DELETE API 的响应代码应该是什么?
我正在使用dotnet corev3.1开发 ASP Core Web API 。
我正在使用 JWT 令牌进行身份验证。对于授权,我使用该[Authorize]属性。
如果用户未登录(尝试访问标有该[Authorize]属性的操作时)或用户的令牌未通过身份验证,我如何创建自己的响应。
我遇到了一个使用从默认授权属性继承的自定义授权属性的解决方案。在这个例子中,该HandleUnauthorizedRequest方法被覆盖。但是我在AuthorizeAttribute课堂上没有看到这样的方法。
有没有办法unauthorized用 http 正文创建自定义响应?
httpresponse ×10
python ×4
c# ×2
http ×2
rest ×2
.net-core ×1
api ×1
api-design ×1
asp.net ×1
asp.net-core ×1
django ×1
flask ×1
go ×1
http-headers ×1
httprequest ×1
java ×1
javascript ×1
json ×1
junit ×1
mockito ×1
polly ×1
python-3.5 ×1
string ×1
templates ×1
twisted ×1
unauthorized ×1
wsgi ×1