繁体   English   中英

ASP.NET Web API获取方法-我可以对Post方法做同样的事情吗?

[英]ASP.NET Web API Get Method- Can i do the same with Post method?

这是控制器中的Get方法,用于创建新用户。

[HttpGet]
public string MakeUser(int number, string name, string surname)
{
    const string chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
    string pass = "";
    Random r = new Random();
    for (int i = 0; i < number; i++)
    {
        pass += chars[r.Next(0, 62)];
    }

    string firstTwoo = name.Substring(0, 2);
    string firstThree = surname.Substring(0, 3);

    return "Your username is: " + firstTwoo + firstThree + "\nYour password is: " + pass;
}

这是控制台中的RunAsync方法。

public static async Task RunAsync()
{
    using (var client = new HttpClient())
    {
        Console.Write("Your username: ");
        string name = Console.ReadLine();
        Console.Write("Your surname: ");
        string surname = Console.ReadLine();
        Console.Write("Please type a number between 5 and 10: ");
        int number = int.Parse(Console.ReadLine());

        client.BaseAddress = new Uri("http://localhost:4688/");
        client.DefaultRequestHeaders.Accept.Clear();
        client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

        // HTTP GET
        HttpResponseMessage response = await client.GetAsync("api/test?number=" + number + "&name=" + name
            + "&surname=" + surname);

        if (response.IsSuccessStatusCode)
        {
            string password = await response.Content.ReadAsAsync<string>();
            Console.WriteLine("\n*****************************\n\n" + password);
        }
    }
}

我的问题是; 有可能用post方法做同样的事情吗? 如果是的话怎么办? 非常感谢你。

您可以使用HttpClientExtensions.PostAsJsonAsync

client.DefaultRequestHeaders.Clear();
client.DefaultRequestHeaders.Accept.Add(
            new MediaTypeWithQualityHeaderValue("application/json"));
//for security purposes, I think you should be adding an authorization token to the header like this, but it doesn't look like you have any security in place
client.DefaultRequestHeaders.Add("Authorization"," Bearer " + token);
HttpResponseMessage response = await client.PostAsJsonAsync(uri, object);

MakeUser将参数设置为包含numbernamesurnameobject ,然后检查ModelState.IsValid

编辑

public class User
{
    public int number { get; set; }

    public string name { get; set; }

    public string surname { get; set; }
}

编辑2

来自Nick Bailey的以下评论:

...在这种情况下,没有理由在POST中使用多个对象。 通常最好的OOP做法是将参数分组为逻辑上一致的实体,以最大程度地减少函数的参数数量。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM