# Map Local（文件）

> 使用 Proxyman 的 Map Local 功能，将本地文件作为请求的响应返回，并自定义状态码、响应头和响应体，快速模拟 API。

## 1. 这是什么？ {#1-whats-it}

Map Local 工具可以让你将本地文件的内容用作请求的 HTTP 响应。

> **备注:** 你可以通过 Scripting 工具为 **GraphQL** 实现 Map Local（[代码片段](https://proxyman.com/docs/zh-cn/scripting/snippet-code#map-local-with-graphql)）
>
> 你可以将 **Map Local 与 Breakpoint 结合使用**，实时修改内容（2.16.0 及更高版本）

## 视频 {#video}

[Video: 使用 Map Local 模拟 API 响应](https://proxyman.com/videos/map-local) (25 seconds)

## 2. 优势 {#2-benefits}

* 为指定请求定义包含状态码、请求头和响应体的响应。无需等待服务器更新，即可测试各种边界情况。
* **使用本地文件模拟 API**：提前试用尚未上线的测试 API。 

![Proxyman Map Local 编辑器，针对 GET https://httpbin.proxyman.app/get，处于 Local File 模式，返回 200 OK 的 JSON 响应](https://proxyman.com/docs/assets/proxyman-map-local-editor.jpg)

_Map Local 编辑器_

### 使用 HTTP 消息 {#with-an-http-message}

1. 在主表格中右键点击请求，然后选择 **Tools** -> **Map Local…**。Proxyman 会基于当前响应创建一条新规则。
2. 按需修改 Status Code、Headers 和 JSON Body。
3. 完成。
4. 再次发送请求，即可看到映射后的新响应。

### 使用本地文件 {#with-a-local-file}

* 点击 **Select Local File** 按钮，选择任意文件。支持文本、JSON、二进制和图片文件。

### 使用 \<FILE\_URL> 标记 {#with-file_url-flag}

* 映射到指定文件，并且仍可设置状态码和响应头。
* 支持 JSON、文本、二进制、图片等类型。
* 请务必设置 `Content-Type` 响应头，以便客户端正确读取响应。

```json
HTTP/1.1 200 OK
Content-Type: application/json

<FILE_URL="~/Desktop/myjson.json">
```

## 3. 使用方法 {#3-how-to-use}

1. 右键点击已有响应的请求 -> **Tools** -> **Map Local…**。Proxyman 会基于当前响应正文创建一条规则，并将文件保存在其专属的 Map Local 文件夹中。如需查看或更改该文件夹，请在 Map Local 窗口中点击 **More** -> **Default Local File Folder**。
2. 直接在编辑器中修改响应正文。
3. 发送请求，检查新的响应正文。

![基于当前响应创建 Map Local 规则](https://proxyman.com/docs/assets/proxyman-map-local-context-menu.jpg)

_基于当前响应创建 Map Local 规则_

![Proxyman Map Local 的 More 菜单，已展开 Default Local File Folder：Choose Folder、Use Default Folder、Reveal in Finder](https://proxyman.com/docs/assets/proxyman-map-local-default-folder.jpg)

_默认本地文件夹_

## 4. 为 GraphQL 请求使用 Map Local {#4-map-local-with-graphql-requests}

从 Proxyman 2.27.0 及更高版本开始，Map Local 可以通过指定的 QueryName 处理 GraphQL 请求。请参阅以下 GraphQL 文档。

- [GraphQL 调试](https://proxyman.com/docs/zh-cn/advanced-features/graphql)

## 5. 使用 Scripting 工具实现 Map Local ✅  {#5-map-local-with-scripting-tool--}

如果你需要使用 **复杂规则** 实现 Map Local，请参阅 [Scripting](https://proxyman.com/docs/zh-cn/scripting/script#1-whats-it)，它能更轻松地达到相同的效果。

请参阅此 [代码片段](https://proxyman.com/docs/zh-cn/scripting/snippet-code#2-common-on-request-and-response)，了解如何使用 JavaScript 代码映射本地文件。

## 了解更多 {#learn-more}

* [如何使用 Proxyman Map Local 工具修改 HTTP 响应](https://proxyman.com/posts/2019-08-03-map-local-feature)
* [如何为 GraphQL 请求映射本地响应？](https://proxyman.com/posts/2021-01-24-How-To-Map_Response_For_GraphQL_Requests)
