コールAPIクラスを作成するためのWinFormフォーム
/// <要約>
///コールAPIが返すJSON
/// </要約>
/// <PARAM NAME = "URL"> APIアドレス</ param>の
/// <をparam nameは= "jsonstr">受信パラメータ</ param>の
/// <PARAM = "タイプ"名>タイプ</ param>の
/// <戻り値> </戻り値>
公共の静的な文字列HttpPost(URL文字列、文字列のjsonstr) //、String型
{
HttpWebRequestのリクエスト=(HttpWebRequestの)WebRequest.Create(URL); // -パラメータが必要にカプセル化される
request.CookieContainer CookieContainer新しい新=();
// HTTPヘッダ送信される次の
request.Referer = "" ;
//リクエスト。ContentTypeを= "text / xmlで";
要求。ヘッダ[ "言語を受け入れ"] = "ZH-CN、ZH; Q = 0。";
Request.Headers [ "同意-文字セット"] = "GBK、UTF-8; Q = 0.7、*; Q = 0.3。";
request.UserAgent =「User--エージェント:Mozillaの/ 5.0(Windows NTの5.1)のAppleWebKit / 535.1(ヤモリ様KHTML)クローム/ 14.0.835.202サファリ/ 535.1「;
; request.KeepAlive =真の
場合、上記// HTTPヘッダが、それは、次の2つの追加されなければならないことができる
アプリケーション/ X-WWW request.ContentType =」 -form-をURLエンコード「;
エンコーディングエンコーディング= Encoding.UTF8; //カスタムコーディングのウェブサイトによると
request.Method =」「を得る; // -必要がポスト行の前に変更を取得する
文字列postDataStr;
//ストリームrequestStream = request.GetRequestStreamを( );
IF(jsonstr =) "!"
{
postDataStr = jsonstr; // -このような"&ARG1 ARG2 =アルギニン= ARG2"の形態で包装ニーズ、
バイト[] = POSTDATA encoding.GetBytes(postDataStr); //送信さpostDataStrデータ、
//request.ContentLength = postData.Length ; //このプロパティ設定への書き込みを許可されていない
。//requestStream.Write(postData、0、postData.Length)
}
HttpWebResponseの応答=(HttpWebResponseの)request.GetResponse(); //リモートサーバはエラーを返し(405)ではありません(500)内部サーバーエラー:allowedMethod /リモートサーバーは、エラーを返します。
ResponseStream = response.GetResponseStreamストリーム();
StreamReaderをStreamReaderをStreamReaderを新しい新=(responseStream、エンコーディング);
文字列retString StreamReader.ReadToEnd =();
streamReader.Close()。
responseStream.Close();
retStringを返します。
}
APIプログラム
システムを使用しました。
System.Collections.Genericを使用しました。
System.Linqのを使用しました。
System.Threading.Tasksを使用しました。
名前空間webApi_test2.Models
{
//方法接口
パブリックインターフェイスIUsersRepository
{
タスク<ユーザー> GETUSER(文字列ID)。
タスク<整数>は、deleteuser(文字列ID);
タスク<整数> AddAUsers(ユーザーアイテム);
タスク<整数> UpdateUsers(ユーザーアイテム);
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace webApi_test2.Models
{
//实体类
public class Users
{
public string UserID { get; set; }
public string Pwd { get; set; }
public string UserName { get; set; }
public string Remark { get; set; }
public DateTime CreatedOn { get; set; }
public DateTime LastLoginTime { get; set; }
}
}
using Ivony.Data;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace webApi_test2.Models
{
//接口的实现 (接口的实现方法根据框架的结构自行修改)
public class UsersRepository : IUsersRepository
{
//查询
public async Task<Users> GetUser(string id)
{
using (Db.UseDatabase("default"))
{
var x = Db.T($"select * from Users where UserID={id}").ExecuteEntityAsync<Users>();
return await x;
}
}
//删除
public async Task<int> DeleteUser(string ID)
{
using (Db.UseDatabase("default"))
{
return await Db.T($"delete from Users where UserID={ID}").ExecuteNonQueryAsync();
}
}
//添加
public async Task<int> AddAUsers(Users UsersItem)
{
using (Db.UseDatabase("default"))
{
return await Db.T($"insert into Users(UserID,Pwd,UserName,CreatedOn) values({UsersItem.UserID},{UsersItem.Pwd},{UsersItem.UserName},{UsersItem.CreatedOn})").ExecuteNonQueryAsync();
}
}
//修改
public async Task<int> UpdateUsers(Users UserItem)
{
using (Db.UseDatabase("default"))
{
return await Db.T($"update Users set Pwd={UserItem.Pwd},UserName={UserItem.UserName},CreatedOn={UserItem.CreatedOn} where UserID={UserItem.UserID}").ExecuteNonQueryAsync();
}
}
}
}
创建Api控制器
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net.Http;
using System.Threading.Tasks;
using Ivony.Data;
using Microsoft.AspNetCore.Mvc;
using webApi_test2.Models;
namespace webApi_test2.Controllers
{
[Route("api/[controller]")]
[ApiController]
public class ValuesController : ControllerBase
{
//接口的依赖注入根据自己框架的要求进行注入 本框架使用自己的源,与其他稍有不同
private IUsersRepository _Repository { get; set; }
public ValuesController(IUsersRepository Repository)
{
_Repository = Repository;
}
//GET api/values
[HttpGet]
public ActionResult<IEnumerable<string>> Get()
{
return new string[] { "value1", "value2" };
}
// GET api/values/5
[HttpGet("{id}")]
public ActionResult<string> Get(int id)
{
return "value";
}
// POST api/values
[HttpPost]
public void Post([FromBody] string value)
{
}
// PUT api/values/5
[HttpPut("{id}")]
public void Put(int id, [FromBody] string value)
{
}
//删除
// DELETE api/values/5
[HttpGet("Delete")]
public int Delete(string id)
{
try
{
//UsersRepository ur = new UsersRepository();
//var x = ur.DeleteUser(id);
var x = _Repository.DeleteUser(id);
return x.Result;
}
catch(Exception ex)
{
throw;
}
}
//修改
[HttpGet("UpdateUsers")]
public async Task<int> UpdateUsers(string UserID, string UserName, string Pwd, string CreatedOn)/*Users UserItem*/
{
Users UserItem = new Users();
try
{
//初始化赋值
UserItem.UserID = UserID;
UserItem.Pwd = Pwd;
UserItem.UserName = UserName;
UserItem.CreatedOn = Convert.ToDateTime(CreatedOn);
//UsersRepository ur = new UsersRepository();
//var x = ur.UpdateUsers(UserItem);
var x = _Repository.UpdateUsers(UserItem);
return await x;
}
catch (Exception)
{
throw;
}
}
//查询 根据UserID查询
[HttpGet("GetUser")]
public async Task<Users> GetUser(string UserID)
{
try
{
//UsersRepository ur = new UsersRepository();
//var x = ur.GetUser(UserID);
var x = _Repository.GetUser(UserID);
return await x;
//return await _Repository.GetUser(UserID);
}
catch (Exception)
{
throw;
}
}
//添加
//GET:/api/values/Get
[HttpGet("AddUsers")]
public async Task<int> AddUsers(string UserID, string UserName, string Pwd, string CreatedOn)/*Users Item*/
{
Users UserItem = new Users();
try
{
UserItem.UserID = UserID;
UserItem.Pwd = Pwd;
UserItem.UserName = UserName;
UserItem.CreatedOn = Convert.ToDateTime(CreatedOn);
//UsersRepository ur = new UsersRepository();
//var x = ur.AddAUsers(UserItem);
var x = _Repository.AddAUsers(UserItem);
return await x;
}
catch (Exception)
{
throw;
}
}
}
}
依赖注入需要的类
using Microsoft.Extensions.DependencyInjection;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Nebula.Hosting;
using webApi_test2.Models;
[assembly: HostInitialize(typeof(webApi_test2.Models.ServiceInitialize))]//webApi_test2.Models.ServiceInitialize 文件位置
namespace webApi_test2.Models
{
internal class ServiceInitialize
{
public static void Initialize(IServiceCollection services)
{
services.AddSingleton<IUsersRepository, UsersRepository>();
}
}
}
WinForm调用api程序方法来源于
https://www.cnblogs.com/mq0036/p/10437993.html
仅此,以作记录。