メインコンテンツまでスキップ

useIMFetch

プラットフォーム

  • ios
  • android

概要

IMFetchはFetchのWrapperで自動的にアクセストークンを埋め込んで通信を行います。
アクセストークンを埋め込むため、この機能を使用してiAP以外との通信を行うことはできません。
IMTenantに設定されたbaseUrlを基点に相対パスでのみ通信先を指定することができます。
iAP以外との通信を行いたい場合は、Fetchを利用してください。

依存関係

アクセストークンを埋め込むためにこの機能を利用するより前にOAuth認証が完了している必要があります。
そのためこの機能は常に使用するコンポーネントより上位層にIMOAuthを配置していなければなりません。

import { IMTenant, IMOAuth, useIMFetch } from "@intra-mart/smartlime";
import { DefaultAuthScreen } from "@intra-mart/smartlime-ui";
import { Button } from 'react-native';

const ChildComponent = () => {
const { imFetch } = useIMFetch();

const onPress = async () => {
const response = await imFetch('your relative path');
const json = await response.json();
}

return <Button title={'Button'} onPress={onPress} />;
}

const App = () => {
return (
<IMTenant
baseUrl={'https://example.org/imart'}
tenantId={'default'}
>
<IMOAuth
requestConfig={
clientId: 'exampleId',
clientSecret: 'exampleSecret',
scopes: ['exampleScope'],
redirectUri: 'exp://example.org:19000',
}
>
<DefaultAuthScreen>
<ChildComponent />
</DefaultAuthScreen>
</IMOAuth>;
</IMTenant>
)
}

Arguments​

useIMFetchOptions

NameTypeRequired
noValidatebooelanno

noValidate

  • IMFetchはいくつかの許容できないurlで、常に通信前にエラーを返すようになっています。(例: /api/bearer/workflow)
  • これはユーザが予期しないエラーに遭遇する事を防ぐための機能ですが、それがあなたの妨げとなる場合このオプションをtrueにする事でValidateを拒否することができます。
  • このオプションを利用しても、相対パスの制限を外すことはできません。

Returns

IMFetch

Arguments​

  • (input: string, init: RequestInit)

Returns

  • Promise(response)
備考

IMFetchはiAPとの通信専用の機能であるためtypescriptを利用している場合には、response.json()の戻り値はiAPで最も一般的な型であるIMJsonを返します。 この動作が好ましくない場合には、IMFetchはGenericsに対応しているためあなたはIMFetchの戻り値に対して任意の型を付ける事ができます。

IMJson

type IMJson = {
error?: boolean;
errorMessage?: string;
data?: Record<string, unknown>;
};

Example Usage

interface userInfo {
name: string;
code: string;
}

interface UserListResponse {
userList: userInfo[];
}

const response = await imFetch<UserListResponse>('your relative path');
const json = await response.json();
console.log(json.userList) // valid