
CleanArchitecture 如何使用 Web-webapi.http 文件获取 Bearer Token 并调用 API 端点【免费下载链接】CleanArchitectureClean Architecture Solution Template for ASP.NET Core项目地址: https://gitcode.com/GitHub_Trending/cle/CleanArchitecture你已经在 CleanArchitecture 模板下生成了 API-only 解决方案想在浏览器之外直接完成登录 → 拿 Bearer Token → 带 Token 调用 TodoLists / TodoItems / WeatherForecasts 等受保护端点的操作。模板仓库的src/Web/Web-webapi.http就是为这个流程准备的它是 VS Code 原生支持的.http请求文件文件头注释指向aka.ms/vs/httpfile已经写好注册、登录、刷新令牌以及全部数据端点的请求通过BearerToken变量自动注入Authorization头。按 README 的说明本流程的环境前提是.NET 10.0 SDK 或更高版本解决方案以--client-framework noneAPI-only方式生成。只有该模式下 Web 项目启用 Bearer Token 认证见src/Infrastructure/DependencyInjection.cs中#if (UseApiOnly)分支注册的IdentityConstants.BearerScheme生成 Angular/React 前端时走的是 Cookie 认证对应文件是src/Web/Web.http数据库用默认的 SQLite 时不需要 Docker也不需要 Node.jsNode.js 仅在前端模式下需要。准备生成并运行解决方案按 README 的命令安装模板并创建 API-only 解决方案dotnet new install Clean.Architecture.Solution.Template dotnet new ca-sln -cf none -db sqlite -o YourProjectName启动应用README 中的原命令为dotnet run --project .\src\AppHostLinux/macOS 上写src/AppHost即可dotnet run --project src/AppHostAspire dashboard 会自动打开展示应用 URL 和日志。有两个直接影响本流程的行为Web 项目的https启动配置监听https://localhost:5001;http://localhost:5000launchSettings.json.http文件里的Web_HostAddress https://localhost:5001与这个地址一致。开发环境下每次启动都会先删除并重建数据库再写入种子数据Program.cs 仅在IsDevelopment()时调用InitialiseDatabaseAsync()。种子数据由 ApplicationDbContextInitialiser.cs 的TrySeedAsync写入包含管理员用户administratorlocalhost密码Administrator1!—— 正是.http文件中Email/Password的默认值一条标题为Tasks的 TodoList含 4 条 TodoItem文件中PUT/DELETE /api/TodoLists/1这类按 Id 操作的就是这条种子列表。理解 Web-webapi.http 的变量文件开头定义了一组变量请求体中用{{变量名}}引用Web_HostAddress https://localhost:5001 Emailadministratorlocalhost PasswordAdministrator1! BearerTokenYourTokenWeb_HostAddressAPI 基地址对应 launchSettings 的 https 端口换端口或主机时只改这一处。Email/Password登录凭证默认即种子管理员要测试自己的账号就改成对应值。BearerToken唯一需要你手动填写的占位符YourToken要替换成 Login 响应中返回的访问令牌见下文 3.2。GET TodoItems请求块内还定义了PageNumber 1和PageSize 10两个分页参数。操作步骤发送请求并设置 Token在 VS Code 中打开src/Web/Web-webapi.http把光标放到某个请求块内点击请求上方的 Send Request 发送响应会直接显示在编辑器中。3.1 注册用户可选种子已含管理员账号可直接跳过。要注册新账号时先把Email/Password改成新账号的值再发送POST {{Web_HostAddress}}/api/Users/Register Content-Type: application/json { email: {{Email}}, password: {{Password}} }3.2 登录获取 Bearer Token必做POST {{Web_HostAddress}}/api/Users/Login Content-Type: application/json { email: {{Email}}, password: {{Password}} }登录成功后从响应中取出访问令牌改写文件顶部的变量行BearerToken此处粘贴 Login 返回的访问令牌之后所有带Authorization: Bearer {{BearerToken}}的请求都会自动携带该令牌。替换前这个头里字面上是字符串YourToken不是有效令牌受保护端点不会放行。3.3 刷新令牌可选POST {{Web_HostAddress}}/api/Users/Refresh Authorization: Bearer {{BearerToken}} Content-Type: application/json { refreshToken: }模板中请求体的refreshToken是空字符串占位需要按实际情况填入后才能实际刷新会话。3.4 带 Token 调用数据端点文件提供了全套数据端点请求统一携带Authorization: Bearer {{BearerToken}}头。最简查询# GET WeatherForecast GET {{Web_HostAddress}}/api/WeatherForecasts Authorization: Bearer {{BearerToken}}创建和查询 TodoList# POST TodoLists POST {{Web_HostAddress}}/api/TodoLists Authorization: Bearer {{BearerToken}} Content-Type: application/json // CreateTodoListCommand { Title: Backlog }# GET TodoLists GET {{Web_HostAddress}}/api/TodoLists Authorization: Bearer {{BearerToken}}其余端点PUT /api/TodoLists/1、DELETE /api/TodoLists/1、POST /api/TodoItems、PUT /api/TodoItems/1、PUT /api/TodoItems/UpdateItemDetails?Id1、DELETE /api/TodoItems/1结构相同直接在文件中发送即可。分页查询 TodoItems# GET TodoItems PageNumber 1 PageSize 10 GET {{Web_HostAddress}}/api/TodoItems?ListId1PageNumber{{PageNumber}}PageSize{{PageSize}} Authorization: Bearer {{BearerToken}}/api/Users/*请求由 Users.cs 中的MapIdentityApiApplicationUser()生成数据端点的实现分别在src/Web/Endpoints/TodoLists.cs、src/Web/Endpoints/TodoItems.cs、src/Web/Endpoints/WeatherForecasts.cs请求失败时可以按文件定位实现。验证调用结果令牌生效BearerToken替换后发送GET /api/TodoLists以 VS Code 响应面板中的状态码和响应体判断请求是否通过认证并返回数据。种子数据锚点由于启动时会重建数据库并写入种子首次启动后发送GET /api/TodoLists响应中应能看到种子创建的Tasks列表含Make a todo list 等 4 条条目。写入验证发送POST /api/TodoListsTitle: Backlog后再次查询新列表应出现在响应中。限制与边界仅适用于-cf none的 API-only 模式SPA 模式使用 Cookie 认证流程见 src/Web/Web.http登录接口获取 Cookie 后以Cookie:头调用同一批端点。开发环境每次启动都会EnsureDeleted后重建数据库手动创建的列表/条目在重启后不保留种子数据会重新写入。所有请求默认指向本地开发地址https://localhost:5001API-only 模式下访问/会重定向到/scalar参考页见 Program.cs可作为端点文档的辅助入口。换用 PostgreSQL 或 SQL Server 数据库时需要 Docker Desktop 或 PodmanREADME 前提条件但认证与请求流程不变。下一步可以阅读 docs/decisions/ 下的架构决策记录了解 Identity、MediatR 等设计背景。【免费下载链接】CleanArchitectureClean Architecture Solution Template for ASP.NET Core项目地址: https://gitcode.com/GitHub_Trending/cle/CleanArchitecture创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考