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
- (option?: useIMFetchOptions, context?: context)
useIMFetchOptions
Name | Type | Required |
---|---|---|
noValidate | booelan | no |
noValidate
- IMFetchはいくつかの許容できないurlで、常に通信前にエラーを返すようになっています。(例:
/api/bearer/workflow
) - これはユーザが予期しないエラーに遭遇する事を防ぐための機能ですが、それがあなたの妨げとなる場合このオプションをtrueにする事でValidateを拒否することができます。
- このオプションを利用しても、相対パスの制限を外すことはできません。
Returns
- IMFetch(Async Function)
IMFetch
Arguments
(input: string, init: RequestInit)
Returns
Promise
(response)
備考
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