我知道如何使用angular向API发送post请求,但是想知道如何检索从应用程序发送的post请求。
假设我有这个C#帖子请求:
public string sendPost(string data)
{
// Create a request using a URL that can receive a post.
WebRequest request = WebRequest.Create("http://localhost:5000/app/edit");
// Set the Method property of the request to POST.
request.Method = "POST";
// Create POST data and convert it to a byte array.
string postData = "{\"data\":\"" + data + "\"}";
byte[] byteArray = Encoding.UTF8.GetBytes(postData);
// Set the ContentType property of the WebRequest.
request.ContentType = "application/json";
// Set the ContentLength property of the WebRequest.
request.ContentLength = byteArray.Length;
// Get the request stream.
Stream dataStream = request.GetRequestStream();
// Write the data to the request stream.
dataStream.Write(byteArray, 0, byteArray.Length);
// Close the Stream object.
dataStream.Close();
// Get the response.
WebResponse response = request.GetResponse();
// Display the status.
Console.WriteLine(((HttpWebResponse)response).StatusDescription);
// Get the stream containing content returned by the server.
dataStream = response.GetResponseStream();
// Open the stream using a StreamReader for easy access.
StreamReader reader = new StreamReader(dataStream);
// Read the content.
string responseFromServer = reader.ReadToEnd();
// Display the content.
Console.WriteLine(responseFromServer);
// Clean up the streams.
reader.Close();
dataStream.Close();
response.Close();
return responseFromServer;
}
在我的角度应用程序中,我有这个控制器:
(function () {
'use strict';
angular.module('anbud')
.controller('editController', ['$scope', 'localStorage', 'md5', '$routeParams', 'httpError',
function ($scope, localStorage, md5, $routeParams, httpError) {
function processHeaderData() {
console.log($routeParams.json);
}
processHeaderData();
}]);
}());
我可以通过网址发送数据并使用routeParams,但我想使用POST代替。如何访问POST数据?
答案 0 :(得分:0)
我认为你正在混淆前端和网络服务器技术。
Angular是一种前端技术,你的意思是将帖子发送到角度,实际上意味着向托管角网站的网络服务器发送请求。
一旦明确了这一点,您只需要向Web服务器发送一个API调用,就像对角度一样,服务器将返回您需要的json数据。
如果你想获得特定路线的HTML表示,我担心没有好办法实现这一点。这对于角度也不是特别的,任何使用ajax调用加载数据的站点都会出现这个问题。
答案 1 :(得分:0)
Angular $ http.post也可以检索数据。出于安全考虑,这非常有益。对此的逻辑保持不变。
您可以通过以下方式从c#控制器发送数据:
using System.Net;
using System.Net.Http;
using System.Web.Http;
namespace Sample.API.Controllers
{
public class ContentDataController
{
[Route("api/ContentData")]
[HttpPost]
public HttpResponseMessage SamplePost(SampleRequest request)
{
HttpResponseMessage response;
try
{
var cda = dataContentAdapter();
//Business logic here
var result = cda.GetContent(request);
//pass the above result to angular
response = Request.CreateResponse(HttpStatusCode.OK, result);
response.Content.Headers.Expires = new DateTimeOffset(DateTime.Now.AddSeconds(300));
}
catch (Exception ex)
{
ApplicationLogger.LogCompleteException(ex, "ContentDataController", "Post");
HttpError myCustomError = new HttpError(ex.Message) { { "IsSuccess", false } };
return Request.CreateErrorResponse(HttpStatusCode.OK, myCustomError);
}
return response;
}
}
}
这样,从angular发送请求以及请求中需要使用的任何数据。有利的是发送json,在你的业务逻辑中解析json。
使用新的有效负载创建一个HttpResponseMessage
,以收取angular $ http。