js-apis-system-fetch.md 3.7 KB
Newer Older
G
Gloria 已提交
1
# @system.fetch (Data Request)
Z
zengyawen 已提交
2

G
Gloria 已提交
3 4
> **NOTE**
>
S
shawn_he 已提交
5
> - The APIs of this module are no longer maintained since API version 6. You are advised to use [`@ohos.net.http`](js-apis-http.md) instead.
G
Gloria 已提交
6
>
Z
zengyawen 已提交
7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
> - The initial APIs of this module are supported since API version 3. Newly added APIs will be marked with a superscript to indicate their earliest API version.


## Modules to Import


```
import fetch from '@system.fetch';
```


## fetch.fetch

fetch(Object): void

Obtains data through a network.

S
shawn_he 已提交
24
**Required permission**: ohos.permission.INTERNET
Z
zengyawen 已提交
25 26 27 28

**System capability**: SystemCapability.Communication.NetStack

**Parameters**
S
shawn_he 已提交
29
| Name| Type| Mandatory| Description|
Z
zengyawen 已提交
30
| -------- | -------- | -------- | -------- |
S
shawn_he 已提交
31 32 33 34 35 36 37 38 39 40 41 42
| url | string | Yes| Resource URL.|
| data | string \| Object | No| Request parameter, which can be a string or a JSON object. For details, see the mapping between **data** and **Content-Type**.|
| header | Object | No| Request header.|
| method | string | No| Request method. The default value is **GET**. The value can be **OPTIONS**, **GET**, **HEAD**, **POST**, **PUT**, **DELETE **or **TRACE**.|
| responseType | string | No| Response type. The return type can be text or JSON. By default, the return type is determined based on **Content-Type** in the header returned by the server. For details, see return values in the **success** callback.|
| success | Function | No| Called when the data is obtained successfully.|
| fail | Function | No| Called when the data failed to be obtained.|
| complete | Function | No| Called when the execution is complete.|

**Table 1** Mapping between data and Content-Type

| data | Content-Type | Description|
Z
zengyawen 已提交
43
| -------- | -------- | -------- |
S
shawn_he 已提交
44 45 46 47
| string | Not set| The default value of Content-Type is **text/plain**, and the value of data is used as the request body.|
| string | Any type| The value of data is used as the request body.|
| Object | Not set| The default value of **Content-Type** is **application/x-www-form-urlencoded**. The **data** value is encoded based on the URL rule and appended in the request body.|
| Object | application/x-www-form-urlencoded | The value of data is encoded based on the URL rule and is used as the request body.|
Z
zengyawen 已提交
48

S
shawn_he 已提交
49
Return values in the **success** callback
Z
zengyawen 已提交
50

S
shawn_he 已提交
51
| Name| Type| Description|
Z
zengyawen 已提交
52
| -------- | -------- | -------- |
S
shawn_he 已提交
53 54 55
| code | number | Server status code.|
| data | string \| Object | The type of the returned data is determined by **responseType**. For details, see the mapping between **responseType** and **data** in **success** callback.|
| headers | Object | All headers in the response from the server.|
Z
zengyawen 已提交
56

S
shawn_he 已提交
57
**Table 2** Mapping between responseType and data in success callback
Z
zengyawen 已提交
58

S
shawn_he 已提交
59
| responseType | data | Description|
Z
zengyawen 已提交
60
| -------- | -------- | -------- |
S
shawn_he 已提交
61 62 63
| N/A| string | When the type in the header returned by the server is **text/\***, **application/json**, **application/javascript**, or **application/xml**, the value is the text content.|
| text | string | Text content.|
| json | Object | A JSON object.|
Z
zengyawen 已提交
64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89

**Example**

```
export default {
  data: {
    responseData: 'NA',
    url: "test_url",
  },
  fetch: function () {
    var that = this;
    fetch.fetch({
      url: that.url,
      success: function(response) {
        console.info("fetch success");
        that.responseData = JSON.stringify(response);
      },
      fail: function() {
        console.info("fetch fail");
      }
    });
  }
}
```


S
shawn_he 已提交
90
> ![icon-note.gif](public_sys-resources/icon-note.gif) **NOTE**<br/>
S
shawn_he 已提交
91
>   HTTPS is supported by default. To support HTTP, you need to add **"network"** to the **config.json** file, and set the attribute **"cleartextTraffic"** to **true**. That is:
Z
zengyawen 已提交
92 93 94 95 96 97 98 99 100 101 102 103 104
>   
> ```
> {
>   "deviceConfig": {
>     "default": {
>       "network": {
>         "cleartextTraffic": true
>       }
>       ...
>     }
>   }
>   ...
> }
S
shawn_he 已提交
105
> ```