وب سرویس تست های روانشناسی

مفاهیم اولیه وب سرویس


معرفی REST API
همان طور که شاید تا به حال شنیده باشید API مخفف عبارت Application Programming Interface می باشد که به برنامه نویسان امکان رد و بدل کردن اطلاعات مابین پلتفرم های مختلف را از طریق ارسال یک درخواست HTTPS ساده و فراخوانی متد های مورد نظر می دهد
در واقع REST یکی روش ساده و انعطاف پذیری برای استفاده از API است و البته محبوب ترین و پر کاربرد ترین که می توان توسط این ساختار از هر کلاینت و پلتفرمی درخواست ساده HTTPS  را ارسال و پاسخ آن را دریافت نمود.

وب سرویس مشاهده نتیجه تست سایکومتریست، شماره تست و پاسخ ها را از طریق پارامترهای ورودی متد GET یا POST دریافت می کند و خروجی را در غالب فرمت های XML و JSON برگشت می دهد.  
اگر با JSON آشنائی ندارید می توانید با مراجعه به سایت json.org هم از ساختار فرمت آن مطلع شوید و هم درایور مربوط به زبان برنامه نویسی مورد نظر خود را دریافت نمائید.

 
دریافت توکن: (POST)
با کلمه عبور و نام کاربری(ایمیل یا شماره موبایل) توکن را دریافت کنید و در Header هر Request ارسال نمایید:
https://api.psychometrist.ir/oauth/token
 
 
فرمت فراخوانی متد ها
MethodName: متد مورد نظر
 
https://api.psychometrist.ir/v1/MethodName
 
ساختار خروجی
مسلما بعد از اجرای هر متد نیاز است نتیجه حاصل از اجرای آن را دریافت و پردازش کنید. 
سرویس سایکومتریست برای سهولت این موضوع از فرمت خروجی رایج JSON استفاده نموده است : 
نتیجه حاصل از فراخوانی متد را توسط جدول کد های برگشتی در Http Status Code برگشت داده میشود , برای مثال در صورتی که متد مورد نظر وجود نداشته باشد مقدار 404 در Status Code قرار می گیرد . 
{
"status": 200,
"message": "تایید شد.",
"return": {
"credit": 5000,
"currency": "تومان"
}
}

مشاهده اعتبار کاربر


برای مشاهده اعتبار کاربر به از متد credit به صورت زیر استفاده می شود:

https://api.psychometrist.ir/v1/credit
 
که در نهایت خروجی به صورت زیر خواهد بود:
{
"status": 200,
"message": "تایید شد.",
"return": {
"credit": 5000,
"currency": "تومان"
}
}

مشاهده لیست تست ها


برای مشاهده لیست تست ها از متد tests به صورت زیر استفاده می شود:

https://api.psychometrist.ir/v1/Your-Api-Key/tests

در نهایت خروجی به صورت زیر خواهد بود:

{
"status": 200,
"message": "تایید شد.",
    "return": [
        {
            "id": 1,
            "title": "تست ام ام پی آی فرم بلند (MMPI-2)",
            "title_en": "MMPI-2",
            "questions_count": 567
        },
        {
            "id": 2,
            "title": "تست ام ام پی آی فرم کوتاه (MMPI)",
            "title_en": "MMPI",
            "questions_count": 71
        },
...
]
}
 

مشاهده لیست سوالات و پاسخ های مربوطه


 

برای مشاهده اعتبار کاربر به از متد تست به صورت زیر استفاده می شود:

https://api.psychometrist.ir/v1/Your-Api-Key/questionAnswers

 پارامتر های ورودی :

نمونه   نوع پارامتر
2 اجباری Integer id

 

 پارامتر Id شماره منحصربفرد تست مورد نظر می باشید که از وب سرویس مشاهده لیست سوالات می توان id تست مورد نظر را انتخاب کرد.

نمونه خروجی به صورت زیر است:

{
    "status": "Success",
    "message": "تایید شد.",
    "return": [
        {
            "test_id": 1,
            "type": "MMPI567",
            "number": 1,
            "title": "مجله های فنی را دوست دارم",
            "description": "",
            "answers": [
                {
                    "choice": 1,
                    "title": "بله",
                    "description": ""
                },
                {
                    "choice": 0,
                    "title": "خیر",
                    "description": ""
                }
            ]
        },
        {
            "test_id": 1,
            "type": "MMPI567",
            "number": 2,
            "title": "اشتهای خوبی دارم",
            "description": "",
            "answers": [
                {
                    "choice": 1,
                    "title": "بله",
                    "description": ""
                },
                {
                    "choice": 0,
                    "title": "خیر",
                    "description": ""
                }
            ]
        },
....
   ]
}

مشاهده نتیجه آزمون ( تفسیر + رسم نمودار)


برای مشاهده نتیجه آزمون از متد result به صورت زیر استفاده می شود:

https://api.psychometrist.ir/v1/Your-Api-Key/result

پارامتر های ورودی: 

نمونه   نوع پارامتر
2 الزامی Integer id
{"1":1,"2":1,"3":1,"4":0,"5":0,"6":1,...} الزامی String answers
male اختیاری String gender
interpret اختیاری String type
محمد الزامی String firstName
علینژاد الزامی String lastName
27 الزامی Integer age
کارمند اختیاری String job
کارشناسی اختیاری String education

 

پارامتر Id شماره منحصربفرد تست مورد نظر می باشید که از وب سرویس مشاهده لیست تست ها می توان id تست مورد نظر را انتخاب کرد.

پارامتر answers که از نوع String می باشد بدین صورت است که ابتدا شماره سوال و جلوی آن عدد 0 به منزله جواب خیر و عدد 1 به منزله جواب بله است قرار می گیرد.

پارامتر gender جنسیت را مشخص می کند که از نوع String است و به صورت پیش فرض male است این پارامتر می تواند شامل male یا female باشد.

پارامتر type نوع خروجی مشخص می کند به صورت پیش فرض پارامتر type شامل both است که به معنی تفسیر و رسم نمودار است. اگر به این پارامتر interpret فرستاده شود فقط تفسیر آزمون انجام و خروجی داده می شود. اگر به این پارامتر chart فرستاده شود فقط رسم نمودار انجام می شود و به عنوان خروجی نمایش داده می شود.

نمونه خروجی به صورت زیر است:

 

	{
"status": 200,
"message": "تایید شد.",
    "return": [
"interpret": "مشکلات را انکار می کنند. ممکن است افرادی ساده و خودمحور باشند و در روابط خود با دیگران به خودنمایی و برون گرایی و رفتارهای ساختگی گرایش یابند. \r\nممکن است تا اندازه ;ای تحریک پذیر بوده و شکایت ;های بدنی را مطرح کنند....",
         "chart": {
            "L": 53,
            "F": 38,
            "K": 67,
            "Hs": 35,
            "D": 39,
            "Hy": 51,
            "Pd": 40,
            "Pa": 35,
            "Pt": 27,
            "Sc": 24,
            "Ma": 42
         },
         "answers": {
            "1": 1,
            "2": 1,
            "3": 1,
            "4": 0,
            "5": 0,
            "6": 1,
...
}
]
}
 

نمونه کد PHP


$url = "https://api.psychometrist.ir/v1/2c53027b5db249b27cc24e2e3f869d8csd23b8/result";
$userAnswers= '{"1":1,"2":1,"3":1,"4":0,"5":0,"6":1,"7":0,"8":0,"9":0,"10":0,"11":0, ...}';

$params = [
'id' => 2,
'answers'=> $userAnswers
];

$handle = curl_init();
curl_setopt($handle, CURLOPT_URL, $url);
curl_setopt($handle, CURLOPT_RETURNTRANSFER, true);
curl_setopt($handle, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($handle, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($handle, CURLOPT_POST, true);
curl_setopt($handle, CURLOPT_POSTFIELDS, $params);
$response = curl_exec($handle);

echo $response;