RestFul, Swagger, OAuth2.0 que WebApi debe conocer

Qué es RestFul

RestFul es un estilo de arquitectura de software, que está diseñado en base al protocolo HTTP. Es un estilo arquitectónico ligero, fácil de entender y fácil de mantener, utilizado principalmente en el diseño de servicios web. Su principio de diseño está orientado a los recursos, cada recurso tiene un identificador único y el cliente opera sobre estos recursos a través del protocolo HTTP.

Pros y contras de RestFul

ventaja

  1. Facilidad de uso: RestFul se basa en el protocolo HTTP, por lo que es muy fácil de usar y no requiere archivos de configuración complicados como SOAP.
  2. Multiplataforma: RestFul se basa en el protocolo HTTP, por lo que se puede utilizar en cualquier plataforma que admita el protocolo HTTP.
  3. Acoplamiento flexible: RestFul es un estilo arquitectónico orientado a recursos, cada recurso tiene un identificador único y el cliente puede operar a través de este identificador, que no tiene nada que ver con la implementación específica del servidor.
  4. Escalabilidad: RestFul se puede ampliar fácilmente agregando nuevos recursos en el lado del servidor.

defecto

  1. Seguridad: dado que RestFul se basa en el protocolo HTTP, se requieren consideraciones adicionales en términos de seguridad, como el uso del protocolo HTTPS.
  2. Rendimiento: dado que RestFul se basa en el protocolo HTTP, habrá una cierta pérdida de rendimiento en la transmisión de datos.
  3. Control de versiones: dado que RestFul está orientado a los recursos, no es muy adecuado para el control de versiones.

Pasos de configuración detallados y precauciones para usar RestFul

pasos de configuración

  1. Defina los recursos: primero, debe definir los recursos, y cada recurso tiene un identificador único.
  2. URI de diseño: URI de diseño, cada URI corresponde a un recurso.
  3. Determinar verbos HTTP: El protocolo HTTP define muchos verbos, como GET, POST, PUT, DELETE, etc. Es necesario determinar qué verbos usar según las necesidades reales.
  4. Formato de datos de diseño: determine el formato de datos, como JSON, XML, etc.
  5. Realice el servidor: realice el servidor, diseñe el servidor según URI, verbo, formato de datos, etc.

Precauciones

  1. Los URI deben ser significativos y no deben contener demasiados detalles.
  2. Los verbos HTTP deben corresponder a operaciones, como GET para obtener recursos, POST para crear recursos, etc.
  3. El formato de los datos debe ser lo suficientemente simple para ser entendido.
  4. Se debe considerar la seguridad, como el uso del protocolo HTTPS.
  5. Se requieren pruebas de rendimiento para garantizar que el rendimiento de RestFul cumpla con los requisitos.

RestFul es un estilo arquitectónico fácil de usar y altamente escalable, pero requiere consideraciones adicionales en términos de seguridad y rendimiento. El uso de RestFul debe seguir ciertos principios de diseño y precauciones para lograr buenos resultados.

¿Qué es Swagger?

Swagger es una herramienta de código abierto que nos ayuda a crear, documentar y probar API RESTful. Admite múltiples lenguajes de programación y marcos, incluidos Java, C #, JavaScript y más. Swagger puede generar documentación API fácil de entender y proporciona una consola interactiva para que los desarrolladores prueben las API.

Ventajas y desventajas de Swagger

ventaja

  1. Documentación automatizada: Swagger puede generar automáticamente documentación API fácil de entender, incluidos los parámetros de solicitud y respuesta de la interfaz, códigos de error, códigos de muestra, etc.
  2. Consola interactiva: Swagger proporciona una consola interactiva para que los desarrolladores prueben las API.
  3. Admite múltiples marcos y lenguajes de programación: Swagger admite múltiples marcos y lenguajes de programación, incluidos Java, C #, JavaScript, etc.
  4. Mejore la eficiencia del desarrollo: Swagger puede reducir el trabajo repetitivo de los desarrolladores y mejorar la eficiencia del desarrollo.

defecto

  1. Costo de aprendizaje: Swagger requiere un cierto costo de aprendizaje y debe comprender su API y configuración relacionadas.
  2. Capacidad de mantenimiento: la documentación generada por Swagger puede volverse demasiado compleja y difícil de mantener.

Pasos de configuración detallados y precauciones para usar Swagger

pasos de configuración

  1. Introducir dependencias de Swagger: Introducir dependencias relacionadas con Swagger en el proyecto.
  2. Configure Swagger: configure Swagger en el proyecto, incluida la información de la API, los documentos de la interfaz, los parámetros de solicitud y respuesta, etc.
  3. Inicie Swagger: Inicie el servicio Swagger y podrá acceder a la consola interactiva de Swagger a través de un navegador.

C# presenta Swagger

  1. Introducir las dependencias relevantes de Swagger en el proyecto. Puede usar el administrador de paquetes NuGet para buscar "Swashbuckle" para importar dependencias relacionadas.
  2. Startup.csAgregue la configuración de Swagger en el archivo . Se puede utilizar el siguiente código:
services.AddSwaggerGen(c =>
{
    c.SwaggerDoc("v1", new OpenApiInfo { Title = "My API", Version = "v1" });
});

Entre ellos, c.SwaggerDocel método especifica el número de versión y el título de la API.

  1. Habilitar Swagger. Puede agregar el siguiente código en el método Startup.csdel archivo :Configure
app.UseSwagger();
app.UseSwaggerUI(c =>
{
    c.SwaggerEndpoint("/swagger/v1/swagger.json", "My API V1");
});

Entre ellos, c.SwaggerEndpointel método especifica la ruta de acceso de la interfaz de usuario de Swagger y el número de versión de la API.

  1. Inicie la aplicación y acceda a la interfaz de usuario de Swagger. Se puede acceder en un navegador http://localhost:<port>/swaggerpara acceder a la interfaz de usuario de Swagger.

Precauciones

  1. La documentación de la interfaz debe ser clara y fácil de entender, y no debe contener demasiados detalles.
  2. Los parámetros de solicitud y respuesta deben ser lo suficientemente simples para ser entendidos.
  3. Se debe considerar la seguridad, como el uso del protocolo HTTPS.
  4. Se requieren pruebas de rendimiento para garantizar que el rendimiento de Swagger cumpla con los requisitos.

Swagger es una herramienta de código abierto que puede ayudarnos a crear, documentar y probar las API RESTful, lo que puede mejorar la eficiencia del desarrollo y la legibilidad de las API. Para usar Swagger, debe comprender su API y configuración relacionadas, y seguir ciertos principios de diseño y precauciones para lograr buenos resultados.

Mecanismo de implementación de OAuth2.0

OAuth2.0 es un estándar abierto para autorizar aplicaciones de terceros para acceder a los datos del usuario. Utiliza un mecanismo de token de proxy que permite a los usuarios autorizar aplicaciones de terceros para acceder a sus datos sin tener que proporcionar su nombre de usuario y contraseña a las aplicaciones de terceros. OAuth2.0 es un protocolo de autorización relativamente nuevo. La principal diferencia entre este y OAuth1.0 es que OAuth2.0 utiliza un proceso de autorización más simple y flexible.

Proceso de autorización de OAuth2.0

El proceso de autorización de OAuth2.0 se divide en cuatro pasos:

  1. La aplicación solicita la autorización del usuario. Después de que el usuario acepte la autorización, la aplicación recibirá un código de autorización.
  2. La aplicación usa el código de autorización para solicitar un token de acceso del servidor de autorización.
  3. El servidor de autorización verifica el código de autorización y emite un token de acceso a la aplicación.
  4. La aplicación usa el token de acceso para solicitar acceso al recurso desde el servidor de recursos.

Ventajas y desventajas de OAuth2.0

ventaja

  1. Seguridad: OAuth2.0 utiliza el mecanismo de token de proxy, que permite a los usuarios autorizar aplicaciones de terceros para acceder a sus datos sin tener que proporcionar sus nombres de usuario y contraseñas a aplicaciones de terceros, por lo que es más seguro.
  2. Flexibilidad: OAuth2.0 adopta un proceso de autorización más simple y flexible, que se puede adaptar fácilmente a diferentes escenarios de aplicación.
  3. Extensibilidad: OAuth2.0 adopta un diseño modular, que se puede ampliar y personalizar fácilmente.

defecto

  1. Costo de aprendizaje: OAuth2.0 requiere un cierto costo de aprendizaje y debe comprender su API y configuración relacionadas.
  2. Capacidad de mantenimiento: la pila de tecnología de OAuth2.0 es relativamente compleja, lo que puede dificultar el mantenimiento del código.

Cómo usar OAuth2.0

  1. Registro de la aplicación: Primero, debe registrar la aplicación en el servidor de autorización y obtener la identificación del cliente y el secreto del cliente.
  2. Solicitar autorización: La aplicación solicita autorización al usuario y redirige al usuario al servidor de autorización.
  3. El servidor de autorización autentica al usuario y solicita autorización: El servidor de autorización autentica al usuario y le presenta los permisos solicitados por la aplicación. Si el usuario está de acuerdo, el servidor de autorización emite un código de autorización a la aplicación.
  4. Solicitud de un token de acceso: la aplicación solicita un token de acceso del servidor de autorización mediante un código de autorización.
  5. El servidor de autorización emite un token de acceso: el servidor de autorización verifica el código de autorización y emite un token de acceso a la aplicación.
  6. Solicitar acceso a los recursos: la aplicación utiliza el token de acceso para solicitar acceso a los recursos del servidor de recursos.

OAuth2.0 es un protocolo de autorización relativamente nuevo, que utiliza un mecanismo de token de proxy para que los usuarios puedan autorizar aplicaciones de terceros para acceder a sus datos sin tener que proporcionar sus nombres de usuario y contraseñas a aplicaciones de terceros. Al usar OAuth2.0, debe prestar atención a su API y configuración relacionadas, y seguir ciertos principios de diseño y precauciones para lograr buenos resultados.

Los pasos específicos y ejemplos de código del uso de OAuth2.0 en C#

Importar archivos de biblioteca

Las aplicaciones desarrolladas con C# pueden usar bibliotecas OAuth2.0 de terceros para implementar funciones de autorización de OAuth2.0, como DotNetOpenAuth, Owin.OAuthetc.

solicitud de registro

Antes de utilizar la autorización OAuth2.0, debe registrar la aplicación en el servidor de autorización y obtener el ID y el secreto del cliente. Según el servidor de autorización específico, el método de registro de la aplicación puede variar.

solicitar autorización

La aplicación solicita la autorización del usuario y lo redirige al servidor de autorización. Esto se puede lograr con el siguiente código:

// 设置授权服务器的地址和客户端ID
var authorizeUrl = "<http://auth-server.com/authorize>";
var clientId = "client-id";

// 生成随机的状态值,用于防止跨站请求伪造攻击
var state = Guid.NewGuid().ToString("N");

// 构造授权请求的URL
var redirectUrl = "<http://app.com/callback>";
var authorizeRequestUrl = string.Format("{0}?client_id={1}&response_type=code&redirect_uri={2}&state={3}",
    authorizeUrl, clientId, redirectUrl, state);

// 重定向用户到授权请求的URL
Response.Redirect(authorizeRequestUrl);

El servidor de autorizaciones autentica al usuario y solicita la autorización

El servidor de autorización autentica al usuario y le presenta los permisos solicitados por la aplicación. Si el usuario está de acuerdo, el servidor de autorización emite un código de autorización a la aplicación. Esto se puede lograr con el siguiente código:

// 接收授权服务器的回调请求
var code = Request.QueryString["code"];
var state = Request.QueryString["state"];

// 验证回调请求的合法性
if (state != expectedState) {
    throw new Exception("Invalid state value.");
}

// 向授权服务器请求访问令牌
var tokenUrl = "<http://auth-server.com/token>";
var tokenRequest = WebRequest.Create(tokenUrl);

var postData = string.Format("grant_type=authorization_code&code={0}&redirect_uri={1}&client_id={2}&client_secret={3}",
    code, redirectUrl, clientId, clientSecret);

var postDataBytes = Encoding.UTF8.GetBytes(postData);
tokenRequest.Method = "POST";
tokenRequest.ContentType = "application/x-www-form-urlencoded";
tokenRequest.ContentLength = postDataBytes.Length;

using (var requestStream = tokenRequest.GetRequestStream()) {
    requestStream.Write(postDataBytes, 0, postDataBytes.Length);
}

// 从授权服务器响应中读取访问令牌
var tokenResponse = (HttpWebResponse)tokenRequest.GetResponse();
var tokenResponseStream = tokenResponse.GetResponseStream();
var tokenResponseReader = new StreamReader(tokenResponseStream);
var tokenResponseString = tokenResponseReader.ReadToEnd();

var tokenJson = JObject.Parse(tokenResponseString);
var accessToken = (string)tokenJson["access_token"];

solicitar acceso a los recursos

La aplicación usa el token de acceso para solicitar acceso al recurso desde el servidor de recursos. Esto se puede lograr con el siguiente código:

// 向资源服务器请求资源
var resourceUrl = "<http://resource-server.com/resource>";
var resourceRequest = WebRequest.Create(resourceUrl);

resourceRequest.Headers["Authorization"] = "Bearer " + accessToken;

var resourceResponse = (HttpWebResponse)resourceRequest.GetResponse();
var resourceResponseStream = resourceResponse.GetResponseStream();
var resourceResponseReader = new StreamReader(resourceResponseStream);
var resourceResponseString = resourceResponseReader.ReadToEnd();

Las aplicaciones desarrolladas con C# pueden usar bibliotecas OAuth2.0 de terceros para implementar OAuth2.0

Supongo que te gusta

Origin blog.csdn.net/Documentlv/article/details/130766494
Recomendado
Clasificación